camera2_device_ops 구조체 참조

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)
 

상세 설명

camera2.h 파일의 527 번 행에 정의되어 있습니다.

필드 문서

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

camera2.h FILE의 708 번 줄에 정의되어 있습니다.

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

camera2.h 파일의 754 번 행에 정의되어 있습니다.

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 기기가 동시에 큐에서 삭제해야 할 수 있는 최대 버퍼 수입니다. 기기는 이 값보다 더 많은 버퍼를 동시에 큐에서 삭제하지 않을 수 있습니다.

camera2.h FILE의 632 라인에 정의되어 있습니다.

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

표준 카메라 사용 사례에 대해 작성된 기본 요청을 만듭니다.

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

반환된 메타데이터 버퍼는 allocate_camera_metadata로 할당해야 합니다. 프레임워크가 버퍼의 소유권을 갖습니다.

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

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

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

camera2.h FILE의 801 라인에 정의되어 있습니다.

int(* flush_captures_in_progress)(const struct camera2_device *)

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

camera2.h FILE의 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 포인터는 device close() 메서드가 호출될 때까지 유효해야 합니다.

버전 정보:

CAMERA_DEVICE_API_VERSION_2_0:

사용할 수 없음. 프레임워크가 이 함수 포인터에 액세스하지 못할 수 있습니다.

CAMERA_DEVICE_API_VERSION_2_1:

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

camera2.h FILE의 820 행에 정의되어 있습니다.

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

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

camera2.h FILE의 795 행에 정의되어 있습니다.

int(* notify_request_queue_not_empty)(const struct camera2_device *)

요청 대기열이 더 이상 비어 있지 않다고 기기에 알립니다. 첫 번째 버퍼가 새 대기열에 추가될 때 또는 소스가 dequeue 호출에 응답하여 NULL을 반환한 후에만 호출해야 합니다.

camera2.h FILE의 544 라인에 정의되어 있습니다.

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

camera2.h FILE의 657 라인에 정의되어 있습니다.

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

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

camera2.h FILE의 765 라인에 정의되어 있습니다.

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

스트림을 해제합니다. get_in_progress_count가 0이 아니거나 스트림 ID가 잘못된 경우 호출 시 오류를 반환합니다.

camera2.h FILE의 667 행에 정의되어 있습니다.

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

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

camera2.h FILE의 549 라인에 정의되어 있습니다.

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

알림 콜백 설정

camera2.h FILE의 787 행에 정의되어 있습니다.

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

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

camera2.h FILE의 536 행에 정의되어 있습니다.

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

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

camera2.h FILE의 779 라인에 정의되어 있습니다.


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