tham chiếu cấu trúc camera2_device_ops

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ể

Định nghĩa tại dòng 527 của file camera2.h .

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.

Định nghĩa tại dòng 708 của file camera2.h .

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.

Định nghĩa tại dòng 754 của file camera2.h .

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.

Định nghĩa tại dòng 632 của file camera2.h .

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.

Định nghĩa tại dòng 580 của file camera2.h .

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

Trạng thái kết xuất của phần cứng máy ảnh

Định nghĩa tại dòng 801 của file camera2.h .

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.

Định nghĩa tại dòng 567 của file camera2.h .

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.

Định nghĩa tại dòng 558 của file camera2.h .

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.

Định nghĩa tại dòng 820 của file camera2.h .

int(* get_metadata_vendor_tag_ops)(const struct camera2_device *, nhà cung cấp_tag_query_ops_t **ops)

Nhận các phương thức để truy vấn thông tin thẻ siêu dữ liệu của tiện ích mở rộng nhà cung cấp. Có thể đặt ops thành NULL nếu không xác định thẻ mở rộng của nhà cung cấp.

Định nghĩa tại dòng 795 của file camera2.h .

int(* notification_request_queue_not_empty)(const struct camera2_device *)

Thông báo cho thiết bị rằng hàng đợi yêu cầu không còn trống. Chỉ được gọi khi bộ đệm đầu tiên được thêm hàng đợi mới hoặc sau khi nguồn trả về NULL để đáp lại lệnh gọi dequeue.

Định nghĩa tại dòng 544 của file camera2.h .

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.

Định nghĩa tại dòng 657 của file camera2.h .

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

Phát hành một luồng tái xử lý. Trả về lỗi nếu được gọi khi get_in_progress_count khác 0 hoặc nếu id luồng không hợp lệ.

Định nghĩa tại dòng 765 của file camera2.h .

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

Phát hành một luồng. Trả về lỗi nếu được gọi khi get_in_progress_count khác 0 hoặc nếu id luồng không hợp lệ.

Định nghĩa tại dòng 667 của file camera2.h .

int(* set_frame_queue_dst_ops)(const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops)

Truyền vào các phương thức giao diện hàng đợi khung đầu ra

Định nghĩa tại dòng 549 của file camera2.h .

int(* set_notify_callback)(const struct camera2_device *, camera2_notify_callback notification_cb, void *user)

Thiết lập gọi lại thông báo

Định nghĩa tại dòng 787 của file camera2.h .

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

Truyền vào các phương thức giao diện hàng đợi yêu cầu đầu vào.

Định nghĩa tại dòng 536 của file camera2.h .

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

Kích hoạt hoạt động không đồng bộ. Điều này được sử dụng để kích hoạt các hành vi đặc biệt của quy trình của camera 3A khi chúng được sử dụng. Xem tài liệu về CAMERA2_TRIGGER_* ở trên để biết chi tiết về id trình kích hoạt và đối số của chúng.

Định nghĩa tại dòng 779 của file camera2.h .


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