camera2_device_ops 구조체 참조
#include <
camera2.h
>
데이터 필드 |
|
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) |
상세 설명
필드 문서
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:
출력 버퍼 너비, 높이, 픽셀 형식으로 정의된 새 입력 스트림을 할당합니다. 성공하면 새 스트림의 ID, gralloc 사용 플래그, 동시에 획득할 수 있는 필요한 버퍼 수를 반환합니다. 오류 조건:
- 센서의 정적 특성에서 지원하는 것으로 나열되지 않은 너비/높이/형식 조합 요청
- 한 번에 너무 많은 재처리 스트림을 구성하도록 요청합니다.
입력 매개변수:
- width, height, format: 이 스트림을 통해 전송할 버퍼의 사양입니다. 형식은 HAL_PIXEL_FORMAT_* 목록의 값이어야 합니다.
- reprocess_stream_ops: 이 스트림의 버퍼를 획득하고 해제하기 위한 함수 포인터의 구조입니다. 기본 스트림은 사용량 및 max_buffers 출력을 기반으로 구성됩니다.
출력 매개변수:
- stream_id: 이 스트림을 식별하는 부호 없는 정수입니다. 이 값은 수신 요청에서 스트림을 식별하고 스트림을 해제하는 데 사용됩니다. 이러한 ID는 입력 스트림 ID와 별도로 번호가 지정됩니다.
- consumer_usage: 요청된 유형의 데이터를 소비하는 데 HAL 기기에 필요한 gralloc 사용 마스크입니다. 스트림 버퍼 큐에 새 gralloc 버퍼를 할당하는 데 사용됩니다.
- max_buffers: HAL 기기가 동시에 획득해야 할 수 있는 최대 버퍼 수입니다. 기기에서 동시에 획득하는 버퍼가 이 값보다 많을 수 없습니다.
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:
사용하도록 새 입력 스트림을 할당합니다. 이 입력 스트림은 기존 출력 스트림에 할당된 버퍼를 사용합니다. 즉, HAL이 출력 스트림에 버퍼를 큐에 추가한 후 이 입력 재처리 스트림에서 전달된 동일한 버퍼를 볼 수 있습니다. HAL이 버퍼를 재처리 스트림으로 다시 해제하면 재사용을 위해 출력 대기열로 반환됩니다.
오류 조건:
- 재처리 스트림의 기반으로 적합하지 않은 크기/형식의 출력 스트림을 사용합니다.
- 한 번에 재처리 스트림을 너무 많이 할당하려고 시도합니다.
입력 매개변수:
- output_stream_id: 재처리에 적합한 크기와 형식을 갖는 기존 출력 스트림의 ID입니다.
- reprocess_stream_ops: 이 스트림의 버퍼를 획득하고 해제하기 위한 함수 포인터의 구조입니다. 기본 스트림은 출력 스트림에서 사용하는 것과 동일한 그래픽 버퍼 핸들을 사용합니다.
출력 매개변수:
- stream_id: 이 스트림을 식별하는 부호 없는 정수입니다. 이 값은 수신 요청에서 스트림을 식별하고 스트림을 해제하는 데 사용됩니다. 이러한 ID는 입력 스트림 ID와 별도로 번호가 지정됩니다.
HAL 클라이언트는 항상 기반으로 하는 출력 스트림을 해제하기 전에 재처리 스트림을 해제해야 합니다.
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:
출력 버퍼 너비, 높이, 타겟, 픽셀 형식으로 정의된 새 출력 스트림을 할당합니다. 성공하면 새 스트림의 ID, gralloc 사용 플래그, 최소 대기열 버퍼 개수, 픽셀 형식을 반환합니다. 오류 조건:
- 센서의 정적 특성에서 지원하는 것으로 나열되지 않은 너비/높이/형식 조합 요청
- 특정 형식 유형의 스트림을 너무 많이 요청합니다 (예: Bayer 원시 스트림 2개).
입력 매개변수:
- width, height, format: 이 스트림을 통해 전송할 버퍼의 사양입니다. 형식은 HAL_PIXEL_FORMAT_* 목록의 값입니다. HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED가 사용되면 플랫폼 gralloc 모듈은 카메라 HAL 및 스트림 소비자가 제공하는 사용 플래그를 기반으로 형식을 선택합니다. 카메라 HAL은 필요한 경우 register_stream_buffers 호출에서 전달된 버퍼를 검사하여 구현별 형식을 가져와야 합니다.
- stream_ops: 이 스트림의 버퍼를 가져오고 큐에 추가하기 위한 함수 포인터의 구조입니다. 기본 스트림은 사용량 및 max_buffers 출력을 기반으로 구성됩니다. 이 구조의 메서드는 allocate_stream이 반환된 후에만 호출될 수 있습니다.
출력 매개변수:
- stream_id: 이 스트림을 식별하는 부호 없는 정수입니다. 이 값은 수신 요청에서 스트림을 식별하고 스트림을 해제하는 데 사용됩니다.
- 사용: 요청된 유형의 데이터를 생성하는 데 HAL 기기에 필요한 gralloc 사용 마스크입니다. 스트림 버퍼 큐에 새 gralloc 버퍼를 할당하는 데 사용됩니다.
- max_buffers: HAL 기기가 동시에 큐에서 삭제해야 할 수 있는 최대 버퍼 수입니다. 기기는 이 값보다 더 많은 버퍼를 동시에 큐에서 삭제하지 않을 수 있습니다.
int(* construct_default_request)(const struct camera2_device *, int request_template, camera_metadata_t **request) |
int(* dump)(const struct camera2_device *, int fd) |
int(* flush_captures_in_progress)(const struct camera2_device *) |
int(* get_in_progress_count)(const struct camera2_device *) |
int(* get_instance_metadata)(const struct camera2_device *, camera_metadata **instance_metadata) |
기기 인스턴스별 메타데이터를 가져옵니다. 이 메타데이터는 카메라 기기의 단일 인스턴스에서 상수여야 하지만 open() 호출 간에 다를 수 있습니다. 반환된 camera_metadata 포인터는 device close() 메서드가 호출될 때까지 유효해야 합니다.
버전 정보:
CAMERA_DEVICE_API_VERSION_2_0:
사용할 수 없음. 프레임워크가 이 함수 포인터에 액세스하지 못할 수 있습니다.
CAMERA_DEVICE_API_VERSION_2_1:
유효합니다. 프레임워크에서 호출할 수 있습니다.
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) |
지정된 스트림의 버퍼를 등록합니다. allocate_stream 호출이 성공한 후, 스트림을 참조하는 첫 번째 요청이 큐에 추가되기 전에 호출됩니다. 이 메서드는 HAL 기기가 나중에 사용할 버퍼를 매핑하거나 준비할 수 있도록 하기 위한 것입니다. num_buffers는 allocate_stream의 max_buffers보다 크거나 같지만 더 클 수 있습니다. 버퍼는 이미 사용하도록 잠겨 있습니다. 호출이 끝나면 모든 버퍼가 대기열에 반환될 준비가 되어 있어야 합니다. 스트림 형식이 HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED로 설정된 경우 카메라 HAL은 여기에서 전달된 버퍼를 검사하여 플랫폼 비공개 픽셀 형식 정보를 확인해야 합니다.
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) |
이 구조체에 관한 문서는 다음 파일에서 생성되었습니다.
- hardware/libhardware/include/hardware/ camera2.h