tham chiếu cấu trúc camera2_device_ops
#include < camera2.h >
Trường dữ liệu | |
int(* | set_request_queue_src_ops )(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops) |
int(* | thông báo_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(* | constructor_default_request )(const struct camera2_device *, int request_template, camera_metadata_t **request) |
int(* | phân bổ_stream )(const struct camera2_device *, chiều rộng uint32_t, chiều cao uint32_t, định dạng int, const camera2_stream_ops_t *stream_ops, uint32_t *stream_id, uint32_t *format_actual, uint32_t *sử dụng, 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(* | phân bổ_reprocess_stream )(const struct camera2_device *, chiều rộng uint32_t, chiều cao uint32_t, định dạng uint32_t, const camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers) |
int(* | phân bổ_reprocess_stream_from_stream )(const struct camera2_device *, uint32_t đầu ra_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 notification_cb, void *user) |
int(* | get_metadata_vendor_tag_ops )(const struct camera2_device *, nhà cung cấp_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) |
miêu tả cụ thể
Tài liệu hiện trường
int(* phân bổ_reprocess_stream)(const struct camera2_device *, chiều rộng uint32_t, chiều cao uint32_t, định dạng uint32_t, const camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers) |
phân bổ_reprocess_stream:
Phân bổ luồng đầu vào mới để sử dụng, được xác định bởi chiều rộng, chiều cao bộ đệm đầu ra và định dạng pixel. Trả về ID của luồng mới, cờ sử dụng gralloc và số lượng bộ đệm có thể thu được đồng thời bắt buộc nếu thành công. Điều kiện lỗi:
- Yêu cầu kết hợp chiều rộng/chiều cao/định dạng không được liệt kê là được hỗ trợ bởi các đặc tính tĩnh của cảm biến
- Yêu cầu cấu hình quá nhiều luồng xử lý lại cùng một lúc.
Thông số đầu vào:
- chiều rộng, chiều cao, định dạng: Đặc điểm kỹ thuật cho bộ đệm được gửi qua luồng này. Định dạng phải là giá trị từ danh sách HAL_PIXEL_FORMAT_*.
- reprocess_stream_ops: Cấu trúc của các con trỏ hàm để thu thập và giải phóng bộ đệm cho luồng này. Luồng cơ bản sẽ được định cấu hình dựa trên mức sử dụng và đầu ra max_buffers.
Thông số đầu ra:
- Stream_id: Một số nguyên không dấu xác định luồng này. Giá trị này được sử dụng trong các yêu cầu gửi đến để xác định luồng và giải phóng luồng. Các id này được đánh số riêng biệt với id luồng đầu vào.
- Consumer_usage: Mặt nạ sử dụng gralloc mà thiết bị HAL cần để sử dụng loại dữ liệu được yêu cầu. Điều này được sử dụng trong việc phân bổ bộ đệm gralloc mới cho hàng đợi bộ đệm luồng.
- max_buffers: Số lượng bộ đệm tối đa mà thiết bị HAL có thể cần có cùng một lúc. Thiết bị có thể không có nhiều bộ đệm thu được cùng lúc hơn giá trị này.
int(* phân bổ_reprocess_stream_from_stream)(const struct camera2_device *, uint32_t out_stream_id, const camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id) |
phân bổ_reprocess_stream_from_stream:
Phân bổ luồng đầu vào mới để sử dụng, luồng này sẽ sử dụng vùng đệm được phân bổ cho luồng đầu ra hiện có. Nghĩa là, sau khi HAL xếp một bộ đệm vào luồng đầu ra, nó có thể thấy bộ đệm tương tự được chuyển đến nó từ luồng tái xử lý đầu vào này. Sau khi HAL giải phóng bộ đệm trở lại luồng tái xử lý, nó sẽ được trả về hàng đợi đầu ra để tái sử dụng.
Điều kiện lỗi:
- Sử dụng luồng đầu ra có kích thước/định dạng không phù hợp làm cơ sở cho luồng xử lý lại.
- Cố gắng phân bổ quá nhiều luồng xử lý lại cùng một lúc.
Thông số đầu vào:
- đầu ra_stream_id: ID của luồng đầu ra hiện có có kích thước và định dạng phù hợp để xử lý lại.
- reprocess_stream_ops: Cấu trúc của các con trỏ hàm để thu thập và giải phóng bộ đệm cho luồng này. Luồng cơ bản sẽ sử dụng cùng các bộ xử lý bộ đệm đồ họa như luồng đầu ra sử dụng.
Thông số đầu ra:
- Stream_id: Một số nguyên không dấu xác định luồng này. Giá trị này được sử dụng trong các yêu cầu gửi đến để xác định luồng và giải phóng luồng. Các id này được đánh số riêng biệt với id luồng đầu vào.
Máy khách HAL phải luôn giải phóng luồng xử lý lại trước khi giải phóng luồng đầu ra mà nó dựa trên.
int(* phân bổ_stream)(const struct camera2_device *,uint32_t chiều rộng, chiều cao uint32_t, định dạng int, const camera2_stream_ops_t *stream_ops,uint32_t *stream_id, uint32_t *format_actual,uint32_t *usage, uint32_t *max_buffers) |
phân bổ_stream:
Phân bổ luồng đầu ra mới để sử dụng, được xác định bởi chiều rộng, chiều cao, mục tiêu của bộ đệm đầu ra và có thể cả định dạng pixel. Trả về ID của luồng mới, cờ sử dụng gralloc, số bộ đệm hàng đợi tối thiểu và có thể cả định dạng pixel nếu thành công. Điều kiện lỗi:
- Yêu cầu kết hợp chiều rộng/chiều cao/định dạng không được liệt kê là được hỗ trợ bởi các đặc tính tĩnh của cảm biến
- Yêu cầu quá nhiều luồng thuộc một loại định dạng nhất định (ví dụ: 2 luồng thô bayer).
Thông số đầu vào:
- chiều rộng, chiều cao, định dạng: Đặc điểm kỹ thuật cho bộ đệm được gửi qua luồng này. Định dạng là một giá trị từ danh sách HAL_PIXEL_FORMAT_*. Nếu HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED được sử dụng thì mô-đun gralloc nền tảng sẽ chọn định dạng dựa trên cờ sử dụng do máy ảnh HAL và người tiêu dùng luồng cung cấp. Máy ảnh HAL phải kiểm tra bộ đệm được cung cấp cho nó trong lệnh gọi register_stream_buffers để có được định dạng dành riêng cho việc triển khai nếu cần.
- Stream_ops: Cấu trúc của các con trỏ hàm để lấy và xếp hàng các bộ đệm cho luồng này. Luồng cơ bản sẽ được định cấu hình dựa trên mức sử dụng và đầu ra max_buffers. Các phương thức trong cấu trúc này có thể không được gọi cho đến sau khi phân bổ_stream trả về.
Thông số đầu ra:
- Stream_id: Một số nguyên không dấu xác định luồng này. Giá trị này được sử dụng trong các yêu cầu gửi đến để xác định luồng và giải phóng luồng.
- cách sử dụng: Mặt nạ sử dụng gralloc cần thiết cho thiết bị HAL để tạo ra loại dữ liệu được yêu cầu. Điều này được sử dụng trong việc phân bổ bộ đệm gralloc mới cho hàng đợi bộ đệm luồng.
- max_buffers: Số lượng bộ đệm tối đa mà thiết bị HAL có thể cần phải loại bỏ cùng một lúc. Thiết bị không thể loại bỏ nhiều bộ đệm hơn giá trị này cùng một lúc.
int(* constructor_default_request)(const struct camera2_device *, int request_template, camera_metadata_t **request) |
Tạo một yêu cầu mặc định được điền đầy đủ cho các trường hợp sử dụng máy ảnh tiêu chuẩn.
Thiết bị phải trả về một yêu cầu hoàn chỉnh được định cấu hình để đáp ứng trường hợp sử dụng được yêu cầu, trường hợp này phải là một trong các enum CAMERA2_TEMPLATE_*. Tất cả các trường kiểm soát yêu cầu phải được bao gồm, ngoại trừ android.request.outputStreams.
Bộ đệm siêu dữ liệu được trả về phải được phân bổ bằng cấp phát_máy ảnh_metadata. Khung này có quyền sở hữu bộ đệm.
int(* dump)(const struct camera2_device *, int fd) |
int(* Flush_captures_in_progress)(const struct camera2_device *) |
Xóa tất cả các ảnh chụp đang thực hiện. Điều này bao gồm tất cả các yêu cầu được xếp hàng đợi (thông thường hoặc đang xử lý lại) chưa đặt bất kỳ đầu ra nào vào luồng hoặc hàng đợi khung. Việc chụp đã hoàn thành một phần phải được hoàn thành bình thường. Không có yêu cầu mới nào có thể bị loại khỏi hàng đợi yêu cầu cho đến khi quá trình xóa hoàn tất.
int(* get_in_progress_count)(const struct camera2_device *) |
Số lượng yêu cầu máy ảnh đang được thiết bị xử lý tại thời điểm hiện tại (chụp/xử lý lại các yêu cầu đã được xếp hàng đợi nhưng chưa được đưa vào (các) đường dẫn đầu ra). Không có luồng nào có thể được phát hành bởi khung cho đến khi số lượng đang xử lý là 0.
int(* get_instance_metadata)(const struct camera2_device *, camera_metadata **instance_metadata) |
Nhận siêu dữ liệu dành riêng cho từng phiên bản thiết bị. Siêu dữ liệu này phải không đổi trong một phiên bản duy nhất của thiết bị máy ảnh nhưng có thể khác nhau giữa các lệnh gọi open(). Con trỏ camera_metadata được trả về phải hợp lệ cho đến khi phương thức close() của thiết bị được gọi.
Thông tin phiên bản:
CAMERA_DEVICE_API_VERSION_2_0:
Không có sẵn. Khung có thể không truy cập được con trỏ hàm này.
CAMERA_DEVICE_API_VERSION_2_1:
Có hiệu lực. Có thể được gọi theo khung.
int(* get_metadata_vendor_tag_ops)(const struct camera2_device *, nhà cung cấp_tag_query_ops_t **ops) |
int(* notification_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) |
Đăng ký bộ đệm cho một luồng nhất định. Điều này được gọi sau khi lệnh gọi phân bổ_stream thành công và trước khi yêu cầu đầu tiên tham chiếu luồng được đưa vào hàng đợi. Phương pháp này nhằm cho phép thiết bị HAL ánh xạ hoặc chuẩn bị bộ đệm để sử dụng sau. num_buffers được đảm bảo ít nhất là max_buffers (từ phân bổ_stream), nhưng có thể lớn hơn. Bộ đệm sẽ bị khóa để sử dụng. Khi kết thúc cuộc gọi, tất cả bộ đệm phải sẵn sàng để được đưa trở lại hàng đợi. Nếu định dạng luồng được đặt thành HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED thì HAL của máy ảnh sẽ kiểm tra bộ đệm được chuyển vào đây để xác định mọi thông tin định dạng pixel riêng tư của nền tảng.
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 notification_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) |
Tài liệu cho cấu trúc này được tạo từ tệp sau:
- phần cứng/libhardware/bao gồm/phần cứng/ camera2.h