Referensi Struktur camera2_device_ops

Referensi Struktur camera2_device_ops

#include < camera2.h >

Bidang Data

ke dalam(* set_request_queue_src_ops )(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops)
ke dalam(* notify_request_queue_not_empty )(konstruk kamera2_device *)
ke dalam(* set_frame_queue_dst_ops )(konstruk kamera2_perangkat *, kamera konst2_frame_queue_dst_ops_t *frame_dst_ops)
ke dalam(* get_in_progress_count )(konstruk kamera2_device *)
ke dalam(* flush_captures_in_progress )(konstruksi struktur kamera2_perangkat *)
ke dalam(* konstruk_default_request )(const struct camera2_device *, int request_template, camera_metadata_t **permintaan)
ke dalam(* alokasi_stream )(const struct camera2_device *, lebar uint32_t, tinggi uint32_t, format int, const camera2_stream_ops_t *stream_ops, uint32_t *stream_id, uint32_t *format_actual, uint32_t *penggunaan, uint32_t *max_buffers)
ke dalam(* register_stream_buffers )(const struct camera2_device *, uint32_t stream_id, int num_buffers, buffer_handle_t *buffers)
ke dalam(* rilis_stream )(const struct camera2_device *, uint32_t stream_id)
ke dalam(* alokasi_reprocess_stream )(const struct camera2_device *, lebar uint32_t, tinggi uint32_t, format uint32_t, const camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers)
ke dalam(* mengalokasikan_reprocess_stream_from_stream )(const struct camera2_device *, uint32_t output_stream_id, const camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id)
ke dalam(* rilis_reproses_stream )(const struct camera2_device *, uint32_t stream_id)
ke dalam(* trigger_action )(const struct camera2_device *, uint32_t trigger_id, int32_t ext1, int32_t ext2)
ke dalam(* set_notify_callback )(const struct camera2_device *, camera2_notify_callback notify_cb, void *pengguna)
ke dalam(* get_metadata_vendor_tag_ops )(const struct camera2_device *, vendor_tag_query_ops_t **ops)
ke dalam(* membuang )(const struct camera2_device *, int fd)
ke dalam(* get_instance_metadata )(const struct camera2_device *, camera_metadata **instance_metadata)

Detil Deskripsi

Definisi pada baris 527 file camera2.h .

Dokumentasi Lapangan

int(* mengalokasikan_reprocess_stream)(const struct camera2_device *, lebar uint32_t, tinggi uint32_t, format uint32_t, const camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers)

alokasi_reproses_stream:

Alokasikan aliran masukan baru untuk digunakan, ditentukan oleh lebar buffer keluaran, tinggi, dan format piksel. Mengembalikan ID streaming baru, tanda penggunaan gralloc, dan jumlah buffer yang diperlukan secara bersamaan, jika berhasil. Kondisi kesalahan:

  • Meminta kombinasi lebar/tinggi/format yang tidak tercantum karena didukung oleh karakteristik statis sensor
  • Meminta terlalu banyak aliran pemrosesan ulang untuk dikonfigurasikan sekaligus.

Parameter masukan:

  • lebar, tinggi, format: Spesifikasi buffer yang akan dikirim melalui aliran ini. Format harus berupa nilai dari daftar HAL_PIXEL_FORMAT_*.
  • reprocess_stream_ops: Struktur penunjuk fungsi untuk memperoleh dan melepaskan buffer untuk aliran ini. Aliran yang mendasarinya akan dikonfigurasi berdasarkan penggunaan dan keluaran max_buffers.

Parameter keluaran:

  • stream_id: Bilangan bulat tak bertanda yang mengidentifikasi aliran ini. Nilai ini digunakan dalam permintaan masuk untuk mengidentifikasi aliran, dan dalam melepaskan aliran. Id ini diberi nomor secara terpisah dari id aliran masukan.
  • konsumen_usage: Masker penggunaan gralloc yang diperlukan oleh perangkat HAL untuk menggunakan jenis data yang diminta. Ini digunakan dalam mengalokasikan buffer gralloc baru untuk antrian buffer aliran.
  • max_buffers: Jumlah maksimum buffer yang mungkin perlu diperoleh perangkat HAL secara bersamaan. Perangkat mungkin tidak memiliki lebih banyak buffer yang diperoleh pada saat yang sama dibandingkan nilai ini.

Definisi pada baris 708 file camera2.h .

int(* mengalokasikan_reprocess_stream_from_stream)(const struct camera2_device *, uint32_t output_stream_id, const camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id)

alokasi_reprocess_stream_from_stream:

Alokasikan aliran masukan baru untuk digunakan, yang akan menggunakan buffer yang dialokasikan untuk aliran keluaran yang ada. Artinya, setelah HAL mengantrekan buffer ke aliran keluaran, HAL mungkin melihat buffer yang sama diserahkan kepadanya dari aliran pemrosesan ulang masukan ini. Setelah HAL melepaskan buffer kembali ke aliran pemrosesan ulang, buffer tersebut akan dikembalikan ke antrian keluaran untuk digunakan kembali.

Kondisi kesalahan:

  • Menggunakan aliran keluaran dengan ukuran/format yang tidak sesuai untuk dasar aliran pemrosesan ulang.
  • Mencoba mengalokasikan terlalu banyak aliran pemrosesan ulang sekaligus.

Parameter masukan:

  • output_stream_id: ID aliran keluaran yang ada yang memiliki ukuran dan format yang sesuai untuk diproses ulang.
  • reprocess_stream_ops: Struktur penunjuk fungsi untuk memperoleh dan melepaskan buffer untuk aliran ini. Aliran yang mendasarinya akan menggunakan pegangan buffer grafis yang sama dengan yang digunakan aliran keluaran.

Parameter keluaran:

  • stream_id: Bilangan bulat tak bertanda yang mengidentifikasi aliran ini. Nilai ini digunakan dalam permintaan masuk untuk mengidentifikasi aliran, dan dalam melepaskan aliran. Id ini diberi nomor secara terpisah dari id aliran masukan.

Klien HAL harus selalu melepaskan aliran pemrosesan ulang sebelum melepaskan aliran keluaran yang menjadi dasarnya.

Definisi pada baris 754 file camera2.h .

int(* alokasi_stream)(const struct camera2_device *,uint32_t lebar, uint32_t tinggi, int format, const camera2_stream_ops_t *stream_ops,uint32_t *stream_id, uint32_t *format_actual,uint32_t *penggunaan, uint32_t *max_buffers)

alokasi_stream:

Alokasikan aliran keluaran baru untuk digunakan, ditentukan oleh lebar buffer keluaran, tinggi, target, dan mungkin format piksel. Mengembalikan ID streaming baru, tanda penggunaan gralloc, jumlah buffer antrean minimum, dan mungkin format piksel, jika berhasil. Kondisi kesalahan:

  • Meminta kombinasi lebar/tinggi/format yang tidak tercantum karena didukung oleh karakteristik statis sensor
  • Meminta terlalu banyak aliran dengan jenis format tertentu (misalnya, 2 aliran mentah bayer).

Parameter masukan:

  • lebar, tinggi, format: Spesifikasi buffer yang akan dikirim melalui aliran ini. Format adalah nilai dari daftar HAL_PIXEL_FORMAT_*. Jika HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED digunakan, maka modul platform gralloc akan memilih format berdasarkan tanda penggunaan yang disediakan oleh kamera HAL dan konsumen aliran. Kamera HAL harus memeriksa buffer yang diserahkan padanya dalam panggilan register_stream_buffers untuk mendapatkan format implementasi spesifik jika diperlukan.
  • stream_ops: Struktur penunjuk fungsi untuk memperoleh dan mengantri buffer untuk aliran ini. Aliran yang mendasarinya akan dikonfigurasi berdasarkan penggunaan dan keluaran max_buffers. Metode dalam struktur ini tidak boleh dipanggil sampai alokasi_stream kembali.

Parameter keluaran:

  • stream_id: Bilangan bulat tak bertanda yang mengidentifikasi aliran ini. Nilai ini digunakan dalam permintaan masuk untuk mengidentifikasi aliran, dan dalam melepaskan aliran.
  • penggunaan: Masker penggunaan gralloc yang diperlukan oleh perangkat HAL untuk menghasilkan jenis data yang diminta. Ini digunakan dalam mengalokasikan buffer gralloc baru untuk antrian buffer aliran.
  • max_buffers: Jumlah maksimum buffer yang mungkin perlu didequeue oleh perangkat HAL pada saat yang bersamaan. Perangkat tidak boleh mengeluarkan buffer lebih dari nilai ini secara bersamaan.

Definisi pada baris 632 file camera2.h .

int(* konstruk_default_request)(konstruk kamera2_perangkat *, int permintaan_template, kamera_metadata_t **permintaan)

Buat permintaan default lengkap untuk kasus penggunaan kamera standar.

Perangkat harus mengembalikan permintaan lengkap yang dikonfigurasi untuk memenuhi kasus penggunaan yang diminta, yang harus berupa salah satu enum CAMERA2_TEMPLATE_*. Semua kolom kontrol permintaan harus disertakan, kecuali android.request.outputStreams.

Buffer metadata yang dikembalikan harus dialokasikan dengan alokasi_camera_metadata. Kerangka kerja ini mengambil kepemilikan buffer.

Definisi pada baris 580 file camera2.h .

int(* dump)(const struct camera2_device *, int fd)

Buang status perangkat keras kamera

Definisi pada baris 801 file camera2.h .

int(* flush_captures_in_progress)(const struct camera2_device *)

Hapus semua pengambilan yang sedang berlangsung. Ini mencakup semua permintaan yang dikeluarkan dari antrean (reguler atau pemrosesan ulang) yang belum menempatkan keluaran apa pun ke dalam aliran atau antrean bingkai. Pengambilan gambar yang diselesaikan sebagian harus diselesaikan secara normal. Tidak ada permintaan baru yang dapat dikeluarkan dari antrian permintaan hingga proses flush selesai.

Definisi pada baris 567 file camera2.h .

int(* get_in_progress_count)(konstruksi struktur kamera2_perangkat *)

Jumlah permintaan kamera yang sedang diproses oleh perangkat saat ini (pengambilan/pemrosesan ulang yang permintaannya telah di-dequeue, namun belum dimasukkan ke dalam pipeline output). Tidak ada aliran yang dapat dirilis oleh kerangka kerja hingga hitungan yang sedang berlangsung adalah 0.

Definisi pada baris 558 file camera2.h .

int(* get_instance_metadata)(konstruksi struktur kamera2_perangkat *, kamera_metadata **instance_metadata)

Dapatkan metadata khusus instance perangkat. Metadata ini harus konstan untuk satu instance perangkat kamera, namun mungkin berbeda di antara panggilan open(). Pointer camera_metadata yang dikembalikan harus valid hingga metode close() perangkat dipanggil.

Informasi versi:

KAMERA_DEVICE_API_VERSION_2_0:

Tidak tersedia. Kerangka kerja mungkin tidak mengakses penunjuk fungsi ini.

KAMERA_DEVICE_API_VERSION_2_1:

Sah. Bisa disebut dengan framework.

Definisi pada baris 820 file camera2.h .

int(* get_metadata_vendor_tag_ops)(const struct camera2_device *, vendor_tag_query_ops_t **ops)

Dapatkan metode untuk menanyakan informasi tag metadata ekstensi vendor. Dapat menyetel operasi ke NULL jika tidak ada tag ekstensi vendor yang ditentukan.

Definisi pada baris 795 file camera2.h .

int(* notify_request_queue_not_empty)(const struct camera2_device *)

Beritahu perangkat bahwa antrian permintaan tidak lagi kosong. Hanya boleh dipanggil ketika buffer pertama ditambahkan antrian baru, atau setelah sumber mengembalikan NULL sebagai respons terhadap panggilan dequeue.

Definisi pada baris 544 file camera2.h .

int(* register_stream_buffers)(const struct camera2_device *, uint32_t stream_id, int num_buffers, buffer_handle_t *buffer)

Daftarkan buffer untuk aliran tertentu. Ini dipanggil setelah panggilan mengalokasikan_stream berhasil, dan sebelum permintaan pertama yang mereferensikan aliran dimasukkan dalam antrean. Metode ini dimaksudkan untuk memungkinkan perangkat HAL memetakan atau menyiapkan buffer untuk digunakan nanti. num_buffers dijamin setidaknya max_buffers (dari mengalokasikan_stream), tetapi mungkin lebih besar. Buffer sudah dikunci untuk digunakan. Di akhir panggilan, semua buffer harus siap untuk dikembalikan ke antrian. Jika format streaming diatur ke HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, kamera HAL harus memeriksa buffer yang diteruskan di sini untuk menentukan informasi format piksel platform-pribadi.

Definisi pada baris 657 file camera2.h .

int(*release_reprocess_stream)(const struct camera2_device *, uint32_t stream_id)

Lepaskan aliran pemrosesan ulang. Mengembalikan kesalahan jika dipanggil ketika get_in_progress_count bukan nol, atau jika id aliran tidak valid.

Definisi pada baris 765 file camera2.h .

int(*release_stream)(const struct camera2_device *, uint32_t stream_id)

Lepaskan aliran. Mengembalikan kesalahan jika dipanggil ketika get_in_progress_count bukan nol, atau jika id aliran tidak valid.

Definisi pada baris 667 file camera2.h .

int(* set_frame_queue_dst_ops)(konstruk kamera2_perangkat *, kamera konst2_frame_queue_dst_ops_t *frame_dst_ops)

Lewati metode antarmuka antrian bingkai keluaran

Definisi pada baris 549 file camera2.h .

int(* set_notify_callback)(const struct camera2_device *, camera2_notify_callback notify_cb, void *pengguna)

Pengaturan panggilan balik notifikasi

Definisi pada baris 787 file camera2.h .

int(* set_request_queue_src_ops)(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops)

Lewati metode antarmuka antrian permintaan masukan.

Definisi pada baris 536 file camera2.h .

int(* trigger_action)(const struct camera2_device *, uint32_t trigger_id, int32_t ext1, int32_t ext2)

Memicu aktivitas asinkron. Ini digunakan untuk memicu perilaku khusus dari rutinitas kamera 3A saat sedang digunakan. Lihat dokumentasi untuk CAMERA2_TRIGGER_* di atas untuk mengetahui detail ID pemicu dan argumennya.

Definisi pada baris 779 file camera2.h .


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