Camera2_device_ops 구조체 참조
#include < camera2.h >
데이터 필드 | |
정수(* | set_request_queue_src_ops )(const struct Camera2_device *, const Camera2_request_queue_src_ops_t *request_src_ops) |
정수(* | inform_request_queue_not_empty )(const struct 카메라2_device *) |
정수(* | set_frame_queue_dst_ops )(const struct Camera2_device *, const Camera2_frame_queue_dst_ops_t *frame_dst_ops) |
정수(* | get_in_progress_count )(const struct Camera2_device *) |
정수(* | flash_captures_in_progress )(const struct Camera2_device *) |
정수(* | constructor_default_request )(const struct Camera2_device *, int request_template, Camera_metadata_t **request) |
정수(* | 할당_스트림 )(const 구조체 카메라2_ 장치 *, uint32_t 너비, uint32_t 높이, int 형식, const 카메라2_stream_ops_t *stream_ops, uint32_t *stream_id, uint32_t *format_actual, uint32_t *사용, uint32_t *max_buffers) |
정수(* | Register_stream_buffers )(const struct Camera2_device *, uint32_t stream_id, int num_buffers, buffer_handle_t *buffers) |
정수(* | release_stream )(const struct Camera2_device *, uint32_t stream_id) |
정수(* | 할당_reprocess_stream )(const struct Camera2_device *, uint32_t 너비, uint32_t 높이, uint32_t 형식, const Camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers) |
정수(* | 할당_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) |
정수(* | release_reprocess_stream )(const struct Camera2_device *, uint32_t stream_id) |
정수(* | Trigger_action )(const struct Camera2_device *, uint32_t Trigger_id, int32_t ext1, int32_t ext2) |
정수(* | set_notify_callback )(const struct Camera2_device *, Camera2_notify_callback inform_cb, void *user) |
정수(* | get_metadata_vendor_tag_ops )(const struct Camera2_device *, Vendor_tag_query_ops_t **ops) |
정수(* | 덤프 )(const struct Camera2_device *, int fd) |
정수(* | get_instance_metadata )(const struct Camera2_device *, Camera_metadata **instance_metadata) |
상세 설명
현장 문서
int(* 할당_reprocess_stream)(const struct Camera2_device *, uint32_t 너비, uint32_t 높이, uint32_t 형식, const Camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers) |
할당_재처리_스트림:
출력 버퍼 너비, 높이 및 픽셀 형식으로 정의된 사용할 새 입력 스트림을 할당합니다. 성공 시 새 스트림의 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(* 할당_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) |
할당_reprocess_stream_from_stream:
기존 출력 스트림에 할당된 버퍼를 사용하는 새 입력 스트림을 할당합니다. 즉, HAL이 버퍼를 출력 스트림의 대기열에 추가한 후 이 입력 재처리 스트림에서 전달된 동일한 버퍼를 볼 수 있습니다. HAL이 버퍼를 재처리 스트림으로 다시 해제한 후 재사용을 위해 출력 큐로 반환됩니다.
오류 조건:
- 재처리 스트림의 기반으로 적합하지 않은 크기/형식의 출력 스트림을 사용합니다.
- 한 번에 너무 많은 재처리 스트림을 할당하려고 합니다.
입력 매개변수:
- output_stream_id: 재처리에 적합한 크기와 형식을 가진 기존 출력 스트림의 ID입니다.
- reprocess_stream_ops: 이 스트림에 대한 버퍼를 획득하고 해제하기 위한 함수 포인터의 구조입니다. 기본 스트림은 출력 스트림이 사용하는 것과 동일한 그래픽 버퍼 핸들을 사용합니다.
출력 매개변수:
- stream_id: 이 스트림을 식별하는 부호 없는 정수입니다. 이 값은 스트림을 식별하기 위해 들어오는 요청과 스트림을 해제하는 데 사용됩니다. 이러한 ID는 입력 스트림 ID와 별도로 번호가 지정됩니다.
HAL 클라이언트는 기반이 되는 출력 스트림을 해제하기 전에 항상 재처리 스트림을 해제해야 합니다.
int(* 할당_스트림)(const struct Camera2_device *,uint32_t 너비, uint32_t 높이, int 형식, const Camera2_stream_ops_t *stream_ops,uint32_t *stream_id, uint32_t *format_actual,uint32_t *사용, uint32_t *max_buffers) |
할당_스트림:
출력 버퍼 너비, 높이, 대상 및 픽셀 형식으로 정의된 사용할 새 출력 스트림을 할당합니다. 성공 시 새 스트림의 ID, gralloc 사용 플래그, 최소 대기열 버퍼 수 및 가능한 경우 픽셀 형식을 반환합니다. 오류 조건:
- 센서의 정적 특성에서 지원하는 것으로 나열되지 않은 너비/높이/형식 조합 요청
- 특정 형식 유형의 스트림을 너무 많이 요청합니다(예: 바이어 원시 스트림 2개).
입력 매개변수:
- width, height, format: 이 스트림을 통해 전송될 버퍼에 대한 사양입니다. 형식은 HAL_PIXEL_FORMAT_* 목록의 값입니다. HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED를 사용하는 경우 플랫폼 gralloc 모듈은 카메라 HAL과 스트림 소비자가 제공하는 사용 플래그를 기반으로 형식을 선택합니다. 카메라 HAL은 필요한 경우 구현별 형식을 얻기 위해 Register_stream_buffers 호출에서 전달된 버퍼를 검사해야 합니다.
- stream_ops: 이 스트림에 대한 버퍼를 얻고 대기열에 넣기 위한 함수 포인터의 구조입니다. 기본 스트림은 사용량 및 max_buffers 출력을 기반으로 구성됩니다. 이 구조의 메서드는 할당 스트림이 반환될 때까지 호출되지 않을 수 있습니다.
출력 매개변수:
- stream_id: 이 스트림을 식별하는 부호 없는 정수입니다. 이 값은 스트림을 식별하기 위해 들어오는 요청과 스트림을 해제하는 데 사용됩니다.
- Usage: 요청된 데이터 유형을 생성하기 위해 HAL 장치에 필요한 gralloc 사용 마스크입니다. 이는 스트림 버퍼 큐에 새로운 gralloc 버퍼를 할당하는 데 사용됩니다.
- max_buffers: HAL 장치가 동시에 대기열에서 제거해야 할 수 있는 최대 버퍼 수입니다. 장치는 동시에 이 값보다 많은 버퍼를 대기열에서 제거할 수 없습니다.
int(* constructor_default_request)(const struct Camera2_device *, int request_template, Camera_metadata_t **request) |
int(* 덤프)(const struct Camera2_device *, int fd) |
int(* flash_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 포인터는 장치 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(* inform_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) |
특정 스트림에 대한 버퍼를 등록합니다. 이는 할당_스트림 호출이 성공한 후, 스트림을 참조하는 첫 번째 요청이 대기열에 추가되기 전에 호출됩니다. 이 방법은 HAL 장치가 나중에 사용할 수 있도록 버퍼를 매핑하거나 준비할 수 있도록 하기 위한 것입니다. num_buffers는 최소한 max_buffers(allocate_stream에서)가 보장되지만 더 클 수도 있습니다. 버퍼는 이미 사용을 위해 잠겨 있습니다. 호출이 끝나면 모든 버퍼가 대기열로 반환될 준비가 되어 있어야 합니다. 스트림 형식이 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 inform_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) |
이 구조체에 대한 문서는 다음 파일에서 생성되었습니다.
- 하드웨어 /libhardware/include/hardware/camera2.h