Referensi Struct camera2_device_ops
#include <
camera2.h
>
Kolom Data |
|
int(* | set_request_queue_src_ops )(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops) |
int(* | notify_request_queue_not_empty )(const struct camera2_device *) |
int(* | set_frame_queue_dst_ops )(const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops) |
int(* | get_in_progress_count )(const struct camera2_device *) |
int(* | flush_captures_in_progress )(const struct camera2_device *) |
int(* | construct_default_request )(const struct camera2_device *, int request_template, camera_metadata_t **request) |
int(* | allocate_stream )(const struct camera2_device *, uint32_t width, uint32_t height, int format, const camera2_stream_ops_t *stream_ops, uint32_t *stream_id, uint32_t *format_actual, uint32_t *usage, uint32_t *max_buffers) |
int(* | register_stream_buffers )(const struct camera2_device *, uint32_t stream_id, int num_buffers, buffer_handle_t *buffers) |
int(* | release_stream )(const struct camera2_device *, uint32_t stream_id) |
int(* | allocate_reprocess_stream )(const struct camera2_device *, uint32_t width, uint32_t height, uint32_t format, const camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers) |
int(* | allocate_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) |
int(* | release_reprocess_stream )(const struct camera2_device *, uint32_t stream_id) |
int(* | trigger_action )(const struct camera2_device *, uint32_t trigger_id, int32_t ext1, int32_t ext2) |
int(* | set_notify_callback )(const struct camera2_device *, camera2_notify_callback notify_cb, void *user) |
int(* | get_metadata_vendor_tag_ops )(const struct camera2_device *, vendor_tag_query_ops_t **ops) |
int(* | dump )(const struct camera2_device *, int fd) |
int(* | get_instance_metadata )(const struct camera2_device *, camera_metadata **instance_metadata) |
Deskripsi Mendetail
Dokumentasi Bidang
int(* allocate_reprocess_stream)(const struct camera2_device *, uint32_t width, uint32_t height, uint32_t format, const camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers) |
allocate_reprocess_stream:
Alokasikan aliran input baru untuk digunakan, yang ditentukan oleh lebar buffering output, tinggi, dan format piksel. Menampilkan ID aliran baru, flag penggunaan gralloc, dan jumlah buffering yang dapat diperoleh secara bersamaan yang diperlukan, jika berhasil. Kondisi error:
- Meminta kombinasi lebar/tinggi/format yang tidak tercantum sebagai didukung oleh karakteristik statis sensor
- Meminta terlalu banyak aliran pemrosesan ulang untuk dikonfigurasi sekaligus.
Parameter input:
- width, height, format: Spesifikasi untuk buffering yang akan dikirim melalui streaming ini. Format harus berupa nilai dari daftar HAL_PIXEL_FORMAT_*.
- reprocess_stream_ops: Struktur pointer fungsi untuk memperoleh dan melepaskan buffering untuk streaming ini. Aliran data pokok akan dikonfigurasi berdasarkan output penggunaan dan max_buffers.
Parameter output:
- stream_id: Bilangan bulat tanpa tanda tangan yang mengidentifikasi aliran data ini. Nilai ini digunakan dalam permintaan masuk untuk mengidentifikasi streaming, dan dalam merilis streaming. ID ini diberi nomor secara terpisah dari ID aliran input.
- consumer_usage: Mask penggunaan gralloc yang diperlukan oleh perangkat HAL untuk menggunakan jenis data yang diminta. Ini digunakan dalam mengalokasikan buffering gralloc baru untuk antrean buffering streaming.
- max_buffers: Jumlah maksimum buffering yang mungkin perlu diperoleh perangkat HAL secara bersamaan. Perangkat mungkin tidak memiliki lebih banyak buffering yang diperoleh secara bersamaan daripada nilai ini.
int(* allocate_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) |
allocate_reprocess_stream_from_stream:
Alokasikan aliran input baru untuk digunakan, yang akan menggunakan buffer yang dialokasikan untuk aliran output yang ada. Artinya, setelah HAL mengantrekan buffering ke aliran output, HAL mungkin melihat buffering yang sama yang diberikan kepadanya dari aliran pemrosesan ulang input ini. Setelah HAL merilis buffering kembali ke aliran pemrosesan ulang, buffering akan dikembalikan ke antrean output untuk digunakan kembali.
Kondisi error:
- Menggunakan streaming output dengan ukuran/format yang tidak sesuai untuk dasar streaming pemrosesan ulang.
- Mencoba mengalokasikan terlalu banyak aliran pemrosesan ulang sekaligus.
Parameter input:
- output_stream_id: ID aliran data output yang ada yang memiliki ukuran dan format yang sesuai untuk pemrosesan ulang.
- reprocess_stream_ops: Struktur pointer fungsi untuk memperoleh dan melepaskan buffering untuk streaming ini. Streaming yang mendasarinya akan menggunakan handle buffering grafis yang sama dengan yang digunakan streaming output.
Parameter output:
- stream_id: Bilangan bulat tanpa tanda tangan yang mengidentifikasi aliran data ini. Nilai ini digunakan dalam permintaan masuk untuk mengidentifikasi streaming, dan dalam merilis streaming. ID ini diberi nomor secara terpisah dari ID aliran input.
Klien HAL harus selalu merilis streaming pemrosesan ulang sebelum merilis streaming output yang menjadi dasarnya.
int(* allocate_stream)(const struct camera2_device *,uint32_t width, uint32_t height, int format, const camera2_stream_ops_t *stream_ops,uint32_t *stream_id, uint32_t *format_actual,uint32_t *usage, uint32_t *max_buffers) |
allocate_stream:
Alokasikan aliran output baru untuk digunakan, yang ditentukan oleh lebar, tinggi, target buffer output, dan mungkin format piksel. Menampilkan ID aliran baru, flag penggunaan gralloc, jumlah buffering antrean minimum, dan mungkin format piksel, jika berhasil. Kondisi error:
- Meminta kombinasi lebar/tinggi/format yang tidak tercantum sebagai didukung oleh karakteristik statis sensor
- Meminta terlalu banyak streaming dari jenis format tertentu (misalnya, 2 streaming raw bayer).
Parameter input:
- width, height, format: Spesifikasi untuk buffering yang akan dikirim melalui streaming ini. Format adalah nilai dari daftar HAL_PIXEL_FORMAT_*. Jika HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED digunakan, modul gralloc platform akan memilih format berdasarkan flag penggunaan yang disediakan oleh HAL kamera dan konsumen streaming. HAL kamera harus memeriksa buffering yang diberikan kepadanya dalam panggilan register_stream_buffers untuk mendapatkan format khusus implementasi jika diperlukan.
- stream_ops: Struktur pointer fungsi untuk mendapatkan dan mengantre buffer untuk streaming ini. Aliran data pokok akan dikonfigurasi berdasarkan output penggunaan dan max_buffers. Metode dalam struktur ini mungkin tidak dipanggil hingga setelah allocate_stream ditampilkan.
Parameter output:
- stream_id: Bilangan bulat tanpa tanda tangan yang mengidentifikasi aliran data ini. Nilai ini digunakan dalam permintaan masuk untuk mengidentifikasi streaming, dan dalam merilis streaming.
- penggunaan: Masker penggunaan gralloc yang diperlukan oleh perangkat HAL untuk menghasilkan jenis data yang diminta. Ini digunakan dalam mengalokasikan buffering gralloc baru untuk antrean buffering streaming.
- max_buffers: Jumlah maksimum buffering yang mungkin perlu dihapus dari antrean perangkat HAL secara bersamaan. Perangkat tidak boleh menghapus lebih banyak buffering daripada nilai ini secara bersamaan.
int(* construct_default_request)(const struct camera2_device *, int request_template, camera_metadata_t **request) |
Buat permintaan default yang terisi untuk kasus penggunaan kamera standar.
Perangkat harus menampilkan permintaan lengkap yang dikonfigurasi untuk memenuhi kasus penggunaan yang diminta, yang harus merupakan salah satu enum CAMERA2_TEMPLATE_*. Semua kolom kontrol permintaan harus disertakan, kecuali android.request.outputStreams.
Buffer metadata yang ditampilkan harus dialokasikan dengan allocate_camera_metadata. Framework mengambil kepemilikan buffer.
int(* dump)(const struct camera2_device *, int fd) |
int(* flush_captures_in_progress)(const struct camera2_device *) |
Mengosongkan semua rekaman yang sedang berlangsung. Hal ini mencakup semua permintaan yang dihapus dari antrean (reguler atau pemrosesan ulang) yang belum menempatkan output apa pun ke dalam streaming atau antrean frame. Perekaman yang selesai sebagian harus diselesaikan seperti biasa. Tidak ada permintaan baru yang dapat dikeluarkan dari antrean permintaan hingga penghapusan selesai.
int(* get_in_progress_count)(const struct camera2_device *) |
Jumlah permintaan kamera yang sedang diproses oleh perangkat saat ini (ambil gambar/proses ulang yang permintaannya telah dihapus dari antrean, tetapi belum dimasukkan ke dalam antrean pipeline output). Tidak ada streaming yang dapat dirilis oleh framework hingga jumlah yang sedang berlangsung adalah 0.
int(* get_instance_metadata)(const struct camera2_device *, camera_metadata **instance_metadata) |
Mendapatkan metadata khusus instance perangkat. Metadata ini harus konstan untuk satu instance perangkat kamera, tetapi dapat berbeda di antara panggilan open(). Pointer camera_metadata yang ditampilkan harus valid hingga metode close() perangkat dipanggil.
Informasi versi:
CAMERA_DEVICE_API_VERSION_2_0:
Tidak tersedia. Framework mungkin tidak dapat mengakses pointer fungsi ini.
CAMERA_DEVICE_API_VERSION_2_1:
Valid. Dapat dipanggil oleh framework.
int(* get_metadata_vendor_tag_ops)(const struct camera2_device *, vendor_tag_query_ops_t **ops) |
int(* notify_request_queue_not_empty)(const struct camera2_device *) |
int(* register_stream_buffers)(const struct camera2_device *, uint32_t stream_id, int num_buffers, buffer_handle_t *buffers) |
Mendaftarkan buffering untuk streaming tertentu. Ini dipanggil setelah panggilan allocate_stream berhasil, dan sebelum permintaan pertama yang mereferensikan streaming dimasukkan ke antrean. Metode ini dimaksudkan untuk memungkinkan perangkat HAL memetakan atau menyiapkan buffering untuk digunakan nanti. num_buffers dijamin minimal max_buffers (dari allocate_stream), tetapi mungkin lebih besar. Buffer akan dikunci untuk digunakan. Di akhir panggilan, semua buffering harus siap dikembalikan ke antrean. Jika format streaming ditetapkan ke HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, HAL kamera harus memeriksa buffering yang diteruskan di sini untuk menentukan informasi format piksel khusus platform.
int(* release_reprocess_stream)(const struct camera2_device *, uint32_t stream_id) |
int(* release_stream)(const struct camera2_device *, uint32_t stream_id) |
int(* set_frame_queue_dst_ops)(const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops) |
int(* set_notify_callback)(const struct camera2_device *, camera2_notify_callback notify_cb, void *user) |
int(* set_request_queue_src_ops)(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops) |
int(* trigger_action)(const struct camera2_device *, uint32_t trigger_id, int32_t ext1, int32_t ext2) |
Dokumentasi untuk struct ini dibuat dari file berikut:
- hardware/libhardware/include/hardware/ camera2.h