Tài liệu tham khảo về cấu trúc camera2_device_ops

Tài liệu tham khảo về 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(*  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)
 

Nội dung mô tả chi tiết

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

Tài liệu về trường

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:

Phân bổ luồng đầu vào mới để sử dụng, được xác định theo chiều rộng, chiều cao vùng đệm đầu ra và định dạng pixel. Trả về mã nhận dạng của luồng mới, cờ sử dụng gralloc và số lượng vùng đệm cần thiết có thể thu được đồng thời khi thành công. Điều kiện lỗi:

  • Yêu cầu tổ hợp chiều rộng/chiều cao/định dạng không được liệt kê là được các đặc điểm tĩnh của cảm biến hỗ trợ
  • Yêu cầu định cấu hình quá nhiều luồng xử lý lại cùng một lúc.

Tham số đầu vào:

  • width, height, format: Thông số kỹ thuật cho các vùng đệm sẽ được gửi qua luồng này. Định dạng phải là một giá trị trong danh sách HAL_PIXEL_FORMAT_*.
  • reprocess_stream_ops: Cấu trúc con trỏ hàm để thu nạp và giải phóng vùng đệ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.

Tham số đầu ra:

  • stream_id: Số nguyên chưa ký xác định luồng này. Giá trị này được dùng trong các yêu cầu đến để xác định luồng và trong quá trình phát hành luồng. Các mã này được đánh số riêng biệt với mã 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. Giá trị này được dùng để phân bổ vùng đệm gralloc mới cho hàng đợi vùng đệm luồng.
  • max_buffers: Số lượng vùng đệm tối đa mà thiết bị HAL có thể cần phải thu được cùng một lúc. Thiết bị không được có nhiều vùng đệm được thu nạp cùng một lúc hơn giá trị này.

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

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:

Phân bổ luồng đầu vào mới để sử dụng, luồng này sẽ sử dụng các vùng đệm được phân bổ cho luồng đầu ra hiện có. Tức là sau khi HAL đưa một vùng đệm vào hàng đợi trên luồng đầu ra, HAL có thể thấy chính vùng đệm đó được chuyển cho HAL từ luồng xử lý lại đầu vào này. Sau khi HAL giải phóng vùng đệm trở lại luồng xử lý lại, vùng đệm sẽ được trả về hàng đợi đầu ra để sử dụng lại.

Đ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.

Tham số đầu vào:

  • output_stream_id: Mã của một 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 con trỏ hàm để thu nạp và giải phóng vùng đệm cho luồng này. Luồng cơ bản sẽ sử dụng cùng một tay điều khiển vùng đệm đồ hoạ như luồng đầu ra sử dụng.

Tham số đầu ra:

  • stream_id: Số nguyên chưa ký xác định luồng này. Giá trị này được dùng trong các yêu cầu đến để xác định luồng và trong quá trình phát hành luồng. Các mã này được đánh số riêng biệt với mã luồng đầu vào.

Ứng dụng HAL phải luôn phát hành luồng xử lý lại trước khi phát hành luồng đầu ra dựa trên luồng đó.

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

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:

Phân bổ luồng đầu ra mới để sử dụng, được xác định theo chiều rộng, chiều cao, mục tiêu của bộ đệm đầu ra và có thể là định dạng pixel. Trả về mã nhận dạng của luồng mới, cờ sử dụng gralloc, số lượng vùng đệm hàng đợi tối thiểu và có thể là định dạng pixel nếu thành công. Điều kiện lỗi:

  • Yêu cầu tổ hợp chiều rộng/chiều cao/định dạng không được liệt kê là được các đặc điểm tĩnh của cảm biến hỗ trợ
  • Yêu cầu quá nhiều luồng của một loại định dạng nhất định (ví dụ: 2 luồng thô bayer).

Tham số đầu vào:

  • width, height, format: Thông số kỹ thuật cho các vùng đệm sẽ được gửi qua luồng này. Định dạng là một giá trị trong danh sách HAL_PIXEL_FORMAT_*. Nếu bạn sử dụng HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, thì mô-đun gralloc của nền tảng sẽ chọn một định dạng dựa trên cờ sử dụng do HAL máy ảnh và người dùng luồng cung cấp. HAL máy ảnh sẽ kiểm tra các vùng đệm được chuyển đến trong lệnh gọi register_stream_buffers để lấy định dạng dành riêng cho quá trình triển khai nếu cần.
  • stream_ops: Cấu trúc của con trỏ hàm để lấy và xếp hàng đợi vùng đệ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 khi allocate_stream trả về.

Tham số đầu ra:

  • stream_id: Số nguyên chưa ký xác định luồng này. Giá trị này được dùng trong các yêu cầu đến để xác định luồng và trong quá trình phát hành luồng.
  • cách sử dụng: Mặt nạ sử dụng gralloc mà thiết bị HAL cần để tạo loại dữ liệu được yêu cầu. Giá trị này được dùng để phân bổ vùng đệm gralloc mới cho hàng đợi vùng đệ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 vùng đệm hơn giá trị này cùng một lúc.

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

int(* construct_default_request)(const struct camera2_device *, int request_template, camera_metadata_t **request)

Tạo một yêu cầu mặc định đã điền sẵn 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, yêu cầu này phải là một trong các enum CAMERA2_TEMPLATE_* Bạn phải đưa tất cả các trường điều khiển yêu cầu vào, ngoại trừ android.request.outputStreams.

Bộ đệm siêu dữ liệu được trả về phải được phân bổ bằng allocate_camera_metadata. Khung này sẽ sở hữu bộ đệm.

Định nghĩa tại dòng 580 của tệp 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 tệp camera2.h .

int(* flush_captures_in_progress)(const struct camera2_device *)

Xoá tất cả bản ghi đang diễn ra. Bao gồm tất cả các yêu cầu đã xoá khỏi hàng đợi (thông thường hoặc xử lý lại) chưa đặt bất kỳ đầu ra nào vào luồng hoặc hàng đợi khung. Bạn phải hoàn tất quá trình chụp ảnh đã hoàn tất một phần như bình thường. Không thể xoá yêu cầu mới khỏi hàng đợi yêu cầu cho đến khi quá trình xả hoàn tất.

Định nghĩa tại dòng 567 của tệp 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 (các lần chụp/xử lý lại đã bị xoá yêu cầu nhưng chưa được đưa vào hàng đợi của(các) quy trình đầu ra). Khung không thể phát hành luồng nào cho đến khi số lượng đang diễn ra là 0.

Định nghĩa tại dòng 558 của tệp 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 phiên bản thiết bị. Siêu dữ liệu này phải không đổi đối với một thực thể 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ó. Khung có thể không truy cập được con trỏ hàm này.

CAMERA_DEVICE_API_VERSION_2_1:

Hợp lệ. Có thể được khung gọi.

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

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

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

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

int(* notify_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 vào hàng đợi mới hoặc sau khi nguồn trả về giá trị NULL để phản hồi lệnh gọi xoá hàng đợi.

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

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

Đăng ký vùng đệm cho một luồng nhất định. Phương thức này được gọi sau khi lệnh gọi allocate_stream thành công và trước khi yêu cầu đầu tiên tham chiếu đến luồng được đưa vào hàng đợi. Phương thức này nhằm cho phép thiết bị HAL liên kết hoặc chuẩn bị các vùng đệm để sử dụng sau này. num_buffers được đảm bảo ít nhất là max_buffers (từ allocate_stream), nhưng có thể lớn hơn. Các vùng đệm sẽ được khoá để sử dụng. Khi lệnh gọi kết thúc, tất cả vùng đệm phải sẵn sàng được trả về hàng đợi. Nếu định dạng luồng được đặt thành HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, thì HAL máy ảnh sẽ kiểm tra các vùng đệm đã truyền vào đây để xác định mọi thông tin về định dạng pixel riêng của nền tảng.

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

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

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

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

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

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

Định nghĩa tại dòng 667 của tệp 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 hình đầu ra

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

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

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

Định nghĩa tại dòng 787 của tệp 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 tệp 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ộ. Phương thức này dùng để kích hoạt các hành vi đặc biệt của các quy trình 3A của máy ảnh khi đang sử dụng. Hãy xem tài liệu về CAMERA2_TRIGGER_* ở trên để biết thông tin chi tiết về mã kích hoạt và đối số của mã đó.

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


Tài liệu cho cấu trúc này được tạo từ tệp sau: