camera2_request_queue_src_ops 구조 참조

camera2_request_queue_src_ops 구조 참조

#include < camera2.h >

데이터 필드

int (* request_count ) (const struct camera2_request_queue_src_ops * q)
int (* dequeue_request ) (const struct camera2_request_queue_src_ops * q, camera_metadata_t ** buffer)
int (* free_request ) (const struct camera2_request_queue_src_ops * q, camera_metadata_t * old_buffer)

상세 설명

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

프레임 워크는 큐와 그 내용을 보유합니다. 처음에는 대기열이 비어 있습니다.

  1. 첫 번째 메타 데이터 버퍼가 큐에 배치되면 프레임 워크는 notify_request_queue_not_empty ()를 호출하여 장치에 신호를 보냅니다.
  2. notify_request_queue_not_empty를 수신 한 후 장치는 다음 버퍼를 처리 할 준비가되면 dequeue ()를 호출해야합니다.
  3. 장치가 버퍼를 처리하고 다음 버퍼를 준비하면 알림을 기다리는 대신 dequeue ()를 다시 호출해야합니다. 사용 가능한 버퍼가 더 이상 없으면 dequeue ()는 NULL을 반환합니다. 이 시점 이후에 버퍼를 사용할 수있게되면 프레임 워크는 notify_request_queue_not_empty ()를 다시 호출해야합니다. 장치가 대기열에서 제거 된 NULL 반환을 수신하면 소스에서 notify_request_queue_not_empty () 호출을 수신 할 때까지 대기열을 다시 쿼리 할 필요가 없습니다.
  4. 장치가 buffer_count ()를 호출하고 0을 수신한다고해서 프레임 워크가 notify_request_queue_not_empty () 호출을 제공한다는 의미는 아닙니다. 프레임 워크는 기기가 대기열에서 빼기에서 NULL을 수신 한 후 또는 초기 시작시에만 이러한 알림을 제공합니다.
  5. notify_request_queue_not_empty ()에 대한 응답으로 dequeue () 호출은 notify_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을 반환합니다. 이 경우 장치는 다시 대기열에서 빼기를 시도하기 전에 notify_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를 반환 할 수 있습니다. 이 메서드를 호출해도 프레임 워크에서 notify_request_queue_not_empty () 메서드를 호출할지 여부에 영향을주지 않습니다.

camera2.h 파일의 228 번째 줄에서 정의되었습니다.


이 구조체에 대한 문서는 다음 파일에서 생성되었습니다.
  • 하드웨어 / libhardware / include / hardware / camera2.h