Camera2_device_ops 구조체 참조

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)

상세 설명

Camera2.h 파일의 527 번째 줄에 정의되어 있습니다.

현장 문서

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 장치가 동시에 획득해야 하는 최대 버퍼 수입니다. 장치에는 이 값보다 동시에 획득된 버퍼가 더 많을 수 없습니다.

Camera2.h 파일의 708 번째 줄에 정의되어 있습니다.

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 클라이언트는 기반이 되는 출력 스트림을 해제하기 전에 항상 재처리 스트림을 해제해야 합니다.

Camera2.h 파일의 754 번째 줄에 정의되어 있습니다.

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 장치가 동시에 대기열에서 제거해야 할 수 있는 최대 버퍼 수입니다. 장치는 동시에 이 값보다 많은 버퍼를 대기열에서 제거할 수 없습니다.

Camera2.h 파일의 632 번째 줄에 정의되어 있습니다.

int(* constructor_default_request)(const struct Camera2_device *, int request_template, Camera_metadata_t **request)

표준 카메라 사용 사례에 대해 채워진 기본 요청을 만듭니다.

장치는 요청된 사용 사례를 충족하도록 구성된 완전한 요청을 반환해야 하며, 이는 CAMERA2_TEMPLATE_* 열거형 중 하나여야 합니다. android.request.outputStreams를 제외한 모든 요청 제어 필드를 포함해야 합니다.

반환된 메타데이터 버퍼는 할당_카메라_메타데이터를 사용하여 할당되어야 합니다. 프레임워크는 버퍼의 소유권을 갖습니다.

Camera2.h 파일의 580 번째 줄에 정의되어 있습니다.

int(* 덤프)(const struct Camera2_device *, int fd)

카메라 하드웨어의 덤프 상태

Camera2.h 파일의 801 번째 줄에 정의되어 있습니다.

int(* flash_captures_in_progress)(const struct Camera2_device *)

진행 중인 모든 캡처를 플러시합니다. 여기에는 아직 출력을 스트림이나 프레임 대기열에 배치하지 않은 대기열에서 제거된 모든 요청(일반 또는 재처리)이 포함됩니다. 부분적으로 완료된 캡처는 정상적으로 완료되어야 합니다. 플러시가 완료될 때까지 요청 대기열에서 새 요청이 제거될 수 없습니다.

Camera2.h 파일의 567 번째 줄에 정의되어 있습니다.

int(* get_in_progress_count)(const struct Camera2_device *)

현재 장치에서 처리 중인 카메라 요청 수(요청이 대기열에서 제외되었지만 아직 출력 파이프라인에 포함되지 않은 캡처/재처리). 진행 중인 개수가 0이 될 때까지 프레임워크에서 스트림을 릴리스할 수 없습니다.

Camera2.h 파일의 558 번째 줄에 정의되어 있습니다.

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:

유효한. 프레임워크에서 호출할 수 있습니다.

Camera2.h 파일의 820 번째 줄에 정의되어 있습니다.

int(* get_metadata_vendor_tag_ops)(const struct Camera2_device *, Vendor_tag_query_ops_t **ops)

공급업체 확장 메타데이터 태그 정보를 쿼리하는 메서드를 가져옵니다. 공급업체 확장 태그가 정의되지 않은 경우 ops를 NULL로 설정할 수 있습니다.

Camera2.h 파일의 795 번째 줄에 정의되어 있습니다.

int(* inform_request_queue_not_empty)(const struct Camera2_device *)

요청 대기열이 더 이상 비어 있지 않음을 장치에 알립니다. 첫 번째 버퍼에 새 큐가 추가되거나 소스가 큐 제거 호출에 대한 응답으로 NULL을 반환한 후에만 호출되어야 합니다.

Camera2.h 파일의 544 번째 줄에 정의되어 있습니다.

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은 여기에서 전달된 버퍼를 검사하여 플랫폼 전용 픽셀 형식 정보를 확인해야 합니다.

Camera2.h 파일의 657 번째 줄에 정의되어 있습니다.

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

재처리 스트림을 해제합니다. get_in_progress_count가 0이 아닐 때 호출되거나 스트림 ID가 유효하지 않은 경우 오류를 반환합니다.

Camera2.h 파일의 765 번째 줄에 정의되어 있습니다.

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

스트림을 해제합니다. get_in_progress_count가 0이 아닐 때 호출되거나 스트림 ID가 유효하지 않은 경우 오류를 반환합니다.

Camera2.h 파일의 667 번째 줄에 정의되어 있습니다.

int(* set_frame_queue_dst_ops)(const struct Camera2_device *, const Camera2_frame_queue_dst_ops_t *frame_dst_ops)

출력 프레임 대기열 인터페이스 메서드 전달

Camera2.h 파일의 549 행에 정의되어 있습니다.

int(* set_notify_callback)(const struct Camera2_device *, Camera2_notify_callback inform_cb, void *user)

알림 콜백 설정

Camera2.h 파일의 787 행에 정의되어 있습니다.

int(* set_request_queue_src_ops)(const struct Camera2_device *, const Camera2_request_queue_src_ops_t *request_src_ops)

입력 요청 대기열 인터페이스 메서드를 전달합니다.

Camera2.h 파일의 536 번째 줄에 정의되어 있습니다.

int(* Trigger_action)(const struct Camera2_device *, uint32_t Trigger_id, int32_t ext1, int32_t ext2)

비동기 활동을 트리거합니다. 이는 사용 중인 카메라 3A 루틴의 특수 동작을 트리거하는 데 사용됩니다. 트리거 ID 및 해당 인수에 대한 자세한 내용은 위의 CAMERA2_TRIGGER_* 설명서를 참조하세요.

Camera2.h 파일의 779 번째 줄에 정의되어 있습니다.


이 구조체에 대한 문서는 다음 파일에서 생성되었습니다.