Referensi Struct camera3_callback_ops

Referensi Struct camera3_callback_ops

#include < camera3.h >

Kolom Data

void(*  process_capture_result )(const struct camera3_callback_ops *, const camera3_capture_result_t *result)
 
void(*  notify )(const struct camera3_callback_ops *, const camera3_notify_msg_t *msg)
 

Deskripsi Mendetail

Definisi di baris 2397 dari file camera3.h .

Dokumentasi Bidang

void(* notify)(const struct camera3_callback_ops *, const camera3_notify_msg_t *msg)

beri tahu:

Callback notifikasi asinkron dari HAL, diaktifkan karena berbagai alasan. Hanya untuk informasi yang tidak bergantung pada pengambilan frame, atau yang memerlukan pengaturan waktu tertentu. Kepemilikan struktur pesan tetap berada di HAL, dan msg hanya perlu valid selama durasi panggilan ini.

Beberapa thread dapat memanggil notify() secara bersamaan.

<= CAMERA_DEVICE_API_VERSION_3_1:

Notifikasi untuk dimulainya eksposur untuk permintaan tertentu harus dikirim oleh HAL sebelum panggilan pertama ke process_capture_result() untuk permintaan tersebut dilakukan.

>= CAMERA_DEVICE_API_VERSION_3_2:

Buffer yang dikirimkan ke framework tidak akan dikirim ke lapisan aplikasi hingga stempel waktu awal eksposur (atau stempel waktu awal eksposur gambar input untuk permintaan pemrosesan ulang) diterima melalui panggilan SHUTTER notify() . Sangat disarankan untuk mengirimkan panggilan ini sesegera mungkin.


Persyaratan performa:

Ini adalah panggilan non-pemblokiran. Framework akan menampilkan panggilan ini dalam 5 md.

Definisi di baris 2499 dari file camera3.h .

void(* process_capture_result)(const struct camera3_callback_ops *, const camera3_capture_result_t *result)

process_capture_result:

Mengirim hasil dari perekaman yang telah selesai ke framework. process_capture_result() dapat dipanggil beberapa kali oleh HAL sebagai respons terhadap satu permintaan pengambilan gambar. Hal ini memungkinkan, misalnya, metadata dan buffer beresolusi rendah ditampilkan dalam satu panggilan, dan buffer JPEG yang diproses pasca dalam panggilan berikutnya, setelah tersedia. Setiap panggilan harus menyertakan nomor frame permintaan yang menampilkan metadata atau buffer.

Komponen (buffer atau metadata) dari hasil lengkap hanya dapat disertakan dalam satu panggilan process_capture_result. Buffer untuk setiap aliran, dan metadata hasil, harus ditampilkan oleh HAL untuk setiap permintaan dalam salah satu panggilan process_capture_result, bahkan jika terjadi error yang menghasilkan beberapa output. Panggilan ke process_capture_result() tanpa buffer output atau metadata hasil tidak diizinkan.

Urutan menampilkan metadata dan buffer untuk satu hasil tidak penting, tetapi buffer untuk aliran tertentu harus ditampilkan dalam urutan FIFO. Jadi, buffer untuk permintaan 5 untuk stream A harus selalu ditampilkan sebelum buffer untuk permintaan 6 untuk stream A. Hal ini juga berlaku untuk metadata hasil; metadata untuk permintaan 5 harus ditampilkan sebelum metadata untuk permintaan 6.

Namun, setiap streaming bersifat independen, sehingga dapat diterima dan diharapkan bahwa buffer untuk permintaan 5 untuk streaming A dapat ditampilkan setelah buffer untuk permintaan 6 untuk streaming B. Selain itu, dapat diterima bahwa metadata hasil untuk permintaan 6 untuk streaming B ditampilkan sebelum buffer untuk permintaan 5 untuk streaming A.

HAL mempertahankan kepemilikan struktur hasil, yang hanya perlu valid untuk diakses selama panggilan ini. Framework akan menyalin apa pun yang diperlukan sebelum panggilan ini ditampilkan.

Buffer output belum perlu diisi; framework akan menunggu pagar sinkronisasi pelepasan buffer streaming sebelum membaca data buffer. Oleh karena itu, metode ini harus dipanggil oleh HAL sesegera mungkin, meskipun beberapa atau semua buffer output masih dalam proses pengisian. HAL harus menyertakan pagar sinkronisasi rilis yang valid ke dalam setiap entri buffer aliran output_buffers, atau -1 jika buffer aliran tersebut sudah terisi.

Jika buffer hasil tidak dapat dibuat untuk permintaan, HAL harus menampilkan buffer metadata kosong, tetapi tetap menyediakan buffer output dan penghalang sinkronisasinya. Selain itu, notify() harus dipanggil dengan pesan ERROR_RESULT.

Jika buffer output tidak dapat diisi, kolom statusnya harus disetel ke STATUS_ERROR. Selain itu, notify() harus dipanggil dengan pesan ERROR_BUFFER.

Jika seluruh pengambilan gagal, metode ini tetap perlu dipanggil untuk menampilkan buffer output ke framework. Semua status buffer harus berupa 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 performa:

Ini adalah panggilan non-pemblokiran. Framework akan menampilkan panggilan ini dalam 5 md.

Latensi pipeline (lihat S7 untuk definisi) harus kurang dari atau sama dengan 4 interval frame, dan harus kurang dari atau sama dengan 8 interval frame.

Definisi di baris 2466 dari file camera3.h .


Dokumentasi untuk struct ini dibuat dari file berikut: