Referensi Struktur camera3_callback_ops
#include < camera3.h >
Bidang Data | |
ruang kosong(* | process_capture_result )(const struct camera3_callback_ops *, const camera3_capture_result_t *hasil) |
ruang kosong(* | beri tahu )(const struct camera3_callback_ops *, const camera3_notify_msg_t *msg) |
Detil Deskripsi
Dokumentasi Lapangan
batal(* beri tahu)(const struct kamera3_callback_ops *, const kamera3_notify_msg_t *pesan) |
memberitahu:
Panggilan balik notifikasi asinkron dari HAL, diaktifkan karena berbagai alasan. Hanya untuk informasi yang tidak bergantung pada pengambilan bingkai, atau yang memerlukan waktu tertentu. Kepemilikan struktur pesan tetap berada pada HAL, dan pesan hanya perlu valid selama panggilan ini berlangsung.
Beberapa thread dapat memanggil notify() secara bersamaan.
<= KAMERA_DEVICE_API_VERSION_3_1:
Pemberitahuan dimulainya pemaparan untuk permintaan tertentu harus dikirim oleh HAL sebelum panggilan pertama ke process_capture_result() untuk permintaan tersebut dibuat.
>= KAMERA_DEVICE_API_VERSION_3_2:
Buffer yang dikirim ke kerangka kerja tidak akan dikirim ke lapisan aplikasi sampai stempel waktu awal eksposur (atau stempel waktu awal eksposur gambar masukan untuk permintaan pemrosesan ulang) telah diterima melalui panggilan SHUTTER notify() . Sangat disarankan untuk mengirimkan panggilan ini sedini mungkin.
Persyaratan kinerja:
Ini adalah panggilan non-pemblokiran. Kerangka kerja akan mengembalikan panggilan ini dalam 5 ms.
batal(* proses_capture_result)(const struct camera3_callback_ops *, const camera3_capture_result_t *hasil) |
proses_capture_hasil:
Kirim hasil dari pengambilan yang telah selesai ke kerangka kerja. process_capture_result() dapat dipanggil beberapa kali oleh HAL sebagai respons terhadap satu permintaan penangkapan. Hal ini memungkinkan, misalnya, metadata dan buffer resolusi rendah dikembalikan dalam satu panggilan, dan buffer JPEG pasca-pemrosesan dalam panggilan berikutnya, setelah tersedia. Setiap panggilan harus menyertakan nomor frame dari permintaan yang metadata atau buffernya dikembalikan.
Komponen (buffer atau metadata) dari hasil lengkap hanya dapat disertakan dalam satu panggilan process_capture_result. Buffer untuk setiap aliran, dan metadata hasil, harus dikembalikan oleh HAL untuk setiap permintaan di salah satu panggilan process_capture_result, bahkan jika terjadi kesalahan yang menghasilkan beberapa output. Panggilan ke process_capture_result() tanpa buffer output atau metadata hasil tidak diperbolehkan.
Urutan pengembalian metadata dan buffer untuk satu hasil tidak menjadi masalah, namun buffer untuk aliran tertentu harus dikembalikan dalam urutan FIFO. Jadi buffer permintaan 5 untuk aliran A harus selalu dikembalikan sebelum buffer permintaan 6 untuk aliran A. Hal ini juga berlaku untuk metadata hasil; metadata untuk permintaan 5 harus dikembalikan sebelum metadata untuk permintaan 6.
Namun, aliran yang berbeda tidak bergantung satu sama lain, sehingga dapat diterima dan diharapkan bahwa buffer untuk permintaan 5 untuk aliran A dapat dikembalikan setelah buffer untuk permintaan 6 untuk aliran B dikembalikan. Dan dapat diterima bahwa metadata hasil untuk permintaan 6 untuk aliran B dikembalikan sebelum buffer untuk permintaan 5 untuk aliran A dikembalikan.
HAL mempertahankan kepemilikan atas struktur hasil, yang hanya perlu valid untuk diakses selama panggilan ini. Kerangka kerja akan menyalin apa pun yang diperlukan sebelum panggilan ini kembali.
Buffer keluaran belum perlu diisi; kerangka kerja akan menunggu di pagar sinkronisasi rilis buffer aliran sebelum membaca data buffer. Oleh karena itu, metode ini harus dipanggil oleh HAL sesegera mungkin, meskipun beberapa atau seluruh buffer keluaran masih terisi. HAL harus menyertakan pagar sinkronisasi rilis yang valid ke setiap entri buffer aliran output_buffers, atau -1 jika buffer aliran tersebut sudah terisi.
Jika buffer hasil tidak dapat dibuat untuk permintaan, HAL harus mengembalikan buffer metadata kosong, namun tetap menyediakan buffer output dan pagar sinkronisasinya. Selain itu, notify() harus dipanggil dengan pesan ERROR_RESULT.
Jika buffer keluaran tidak dapat diisi, kolom statusnya harus disetel ke STATUS_ERROR. Selain itu, notify() harus dipanggil dengan pesan ERROR_BUFFER.
Jika seluruh penangkapan gagal, maka metode ini masih perlu dipanggil untuk mengembalikan buffer keluaran ke kerangka kerja. Semua status buffer harus STATUS_ERROR, dan metadata hasil harus berupa buffer kosong. Selain itu, notify() harus dipanggil dengan pesan ERROR_REQUEST. Dalam hal ini, pesan ERROR_RESULT/ERROR_BUFFER individual tidak boleh dikirim.
Persyaratan kinerja:
Ini adalah panggilan non-pemblokiran. Kerangka kerja akan mengembalikan panggilan ini dalam 5 ms.
Latensi pipeline (lihat S7 untuk definisinya) harus kurang dari atau sama dengan 4 interval frame, dan harus kurang dari atau sama dengan 8 interval frame.
Dokumentasi untuk struct ini dihasilkan dari file berikut:
- perangkat keras/libhardware/termasuk/perangkat keras/ kamera3.h