Referensi Struktur camera2_request_queue_src_ops

Referensi Struktur camera2_request_queue_src_ops

#include < camera2.h >

Bidang Data

ke dalam(* request_count )(const struct kamera2_request_queue_src_ops *q)
ke dalam(* dequeue_request )(const struct camera2_request_queue_src_ops *q, camera_metadata_t **buffer)
ke dalam(* free_request )(const struct camera2_request_queue_src_ops *q, camera_metadata_t *old_buffer)

Detil Deskripsi

Protokol antrian masukan permintaan:

Kerangka kerja ini menampung antrian dan isinya. Pada awalnya, antriannya kosong.

  1. Saat buffer metadata pertama ditempatkan ke dalam antrean, kerangka kerja memberi sinyal ke perangkat dengan memanggil notify_request_queue_not_empty().
  2. Setelah menerima notify_request_queue_not_empty, perangkat harus memanggil dequeue() setelah siap menangani buffer berikutnya.
  3. Setelah perangkat memproses buffer, dan siap untuk buffer berikutnya, perangkat harus memanggil dequeue() lagi alih-alih menunggu notifikasi. Jika tidak ada lagi buffer yang tersedia, dequeue() akan mengembalikan NULL. Setelah titik ini, ketika buffer tersedia, kerangka kerja harus memanggil notify_request_queue_not_empty() lagi. Jika perangkat menerima pengembalian NULL dari dequeue, perangkat tidak perlu menanyakan antrian lagi hingga panggilan notify_request_queue_not_empty() diterima dari sumber.
  4. Jika perangkat memanggil buffer_count() dan menerima 0, ini tidak berarti bahwa framework akan memberikan panggilan notify_request_queue_not_empty(). Kerangka kerja hanya akan memberikan pemberitahuan seperti itu setelah perangkat menerima NULL dari dequeue, atau pada permulaan awal.
  5. Panggilan dequeue() sebagai respons terhadap notify_request_queue_not_empty() mungkin berada di thread yang sama dengan panggilan notify_request_queue_not_empty(), dan dapat dilakukan dari dalam panggilan notify.
  6. Semua buffer permintaan yang sudah di-dequeued harus dikembalikan ke framework dengan memanggil free_request, termasuk ketika terjadi kesalahan, perangkat diminta untuk di-flush, atau ketika perangkat dimatikan.

Definisi pada baris 220 file camera2.h .

Dokumentasi Lapangan

int(* dequeue_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t **buffer)

Dapatkan buffer metadata dari kerangka kerja. Mengembalikan OK jika tidak ada kesalahan. Jika antrian kosong, kembalikan NULL dalam buffer. Dalam hal ini, perangkat harus menunggu pesan notify_request_queue_not_empty() sebelum mencoba melakukan dequeue lagi. Buffer yang diperoleh dengan cara ini harus dikembalikan ke framework dengan free_request() .

Definisi pada baris 237 file camera2.h .

int(* free_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t *old_buffer)

Mengembalikan buffer metadata ke kerangka kerja setelah digunakan, atau jika terjadi kesalahan atau penghentian.

Definisi pada baris 243 file camera2.h .

int(* request_count)(const struct kamera2_request_queue_src_ops *q)

Dapatkan jumlah buffer permintaan yang tertunda dalam antrian. Dapat mengembalikan CAMERA2_REQUEST_QUEUE_IS_BOTTOMLESS jika permintaan berulang (permintaan streaming) saat ini dikonfigurasi. Memanggil metode ini tidak berpengaruh pada apakah metode notify_request_queue_not_empty() akan dipanggil oleh framework.

Definisi pada baris 228 file camera2.h .


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