Camera2_request_queue_src_ops 구조체 참조

Camera2_request_queue_src_ops 구조체 참조

#include < camera2.h >

데이터 필드

정수(* request_count )(const 구조체 카메라2_request_queue_src_ops *q)
정수(* dequeue_request )(const struct 카메라2_request_queue_src_ops *q, Camera_metadata_t **버퍼)
정수(* free_request )(const 구조체 카메라2_request_queue_src_ops *q, 카메라_메타데이터_t *old_buffer)

상세 설명

요청 입력 대기열 프로토콜:

프레임워크는 대기열과 해당 콘텐츠를 보유합니다. 시작 시 대기열은 비어 있습니다.

  1. 첫 번째 메타데이터 버퍼가 대기열에 배치되면 프레임워크는 inform_request_queue_not_empty()를 호출하여 장치에 신호를 보냅니다.
  2. inform_request_queue_not_empty를 수신한 후 장치는 다음 버퍼를 처리할 준비가 되면 dequeue()를 호출해야 합니다.
  3. 장치가 버퍼를 처리하고 다음 버퍼를 위한 준비가 되면 알림을 기다리는 대신 dequeue()를 다시 호출해야 합니다. 더 이상 사용 가능한 버퍼가 없으면 dequeue()는 NULL을 반환합니다. 이 시점 이후에 버퍼를 사용할 수 있게 되면 프레임워크는 inform_request_queue_not_empty()를 다시 호출해야 합니다. 장치가 대기열 제거에서 NULL 반환을 받으면 소스에서 inform_request_queue_not_empty() 호출이 수신될 때까지 대기열을 다시 쿼리할 필요가 없습니다.
  4. 장치가 buffer_count()를 호출하고 0을 수신한다고 해서 프레임워크가 inform_request_queue_not_empty() 호출을 제공한다는 의미는 아닙니다. 프레임워크는 장치가 대기열에서 NULL을 수신한 후 또는 초기 시작 시에만 이러한 알림을 제공합니다.
  5. informy_request_queue_not_empty()에 대한 응답으로 dequeue() 호출은 inform_request_queue_not_empty() 호출과 동일한 스레드에 있을 수 있으며 알림 호출 내에서 수행될 수 있습니다.
  6. 오류가 발생하거나 장치 플러시가 요청되거나 장치가 종료되는 경우를 포함하여 큐에서 제거된 모든 요청 버퍼는 free_request를 호출하여 프레임워크에 반환되어야 합니다.

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

현장 문서

int(* dequeue_request)(const struct Camera2_request_queue_src_ops *q, Camera_metadata_t **buffer)

프레임워크에서 메타데이터 버퍼를 가져옵니다. 오류가 없으면 OK를 반환합니다. 큐가 비어 있으면 버퍼에 NULL을 반환합니다. 이 경우 장치는 대기열에서 다시 제거를 시도하기 전에 inform_request_queue_not_empty() 메시지를 기다려야 합니다. 이런 방식으로 얻은 버퍼는 free_request() 를 사용하여 프레임워크에 반환되어야 합니다.

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

int(* free_request)(const struct Camera2_request_queue_src_ops *q, Camera_metadata_t *old_buffer)

메타데이터 버퍼가 사용된 후 또는 오류나 종료가 발생한 경우 프레임워크에 반환합니다.

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

int(* request_count)(const struct Camera2_request_queue_src_ops *q)

대기열에 보류 중인 요청 버퍼 수를 가져옵니다. 반복 요청(스트림 요청)이 현재 구성된 경우 CAMERA2_REQUEST_QUEUE_IS_BOTTOMLESS를 반환할 수 있습니다. 이 메서드를 호출해도 프레임워크에서 inform_request_queue_not_empty() 메서드를 호출할지 여부에는 영향을 미치지 않습니다.

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


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