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) |
상세 설명
요청 입력 대기열 프로토콜 :
프레임 워크는 큐와 그 내용을 보유합니다. 처음에는 대기열이 비어 있습니다.
- 첫 번째 메타 데이터 버퍼가 큐에 배치되면 프레임 워크는 notify_request_queue_not_empty ()를 호출하여 장치에 신호를 보냅니다.
- notify_request_queue_not_empty를 수신 한 후 장치는 다음 버퍼를 처리 할 준비가되면 dequeue ()를 호출해야합니다.
- 장치가 버퍼를 처리하고 다음 버퍼를 준비하면 알림을 기다리는 대신 dequeue ()를 다시 호출해야합니다. 사용 가능한 버퍼가 더 이상 없으면 dequeue ()는 NULL을 반환합니다. 이 시점 이후에 버퍼를 사용할 수있게되면 프레임 워크는 notify_request_queue_not_empty ()를 다시 호출해야합니다. 장치가 대기열에서 제거 된 NULL 반환을 수신하면 소스에서 notify_request_queue_not_empty () 호출을 수신 할 때까지 대기열을 다시 쿼리 할 필요가 없습니다.
- 장치가 buffer_count ()를 호출하고 0을 수신한다고해서 프레임 워크가 notify_request_queue_not_empty () 호출을 제공한다는 의미는 아닙니다. 프레임 워크는 기기가 대기열에서 빼기에서 NULL을 수신 한 후 또는 초기 시작시에만 이러한 알림을 제공합니다.
- notify_request_queue_not_empty ()에 대한 응답으로 dequeue () 호출은 notify_request_queue_not_empty () 호출과 동일한 스레드에있을 수 있으며 알림 호출 내에서 수행 될 수 있습니다.
- 대기열에서 뺀 모든 요청 버퍼는 오류 발생, 장치 플러시 요청 또는 장치 종료를 포함하여 free_request를 호출하여 프레임 워크로 반환되어야합니다.
현장 문서
int (* dequeue_request) (const struct camera2_request_queue_src_ops * q, camera_metadata_t ** buffer) |
프레임 워크에서 메타 데이터 버퍼를 가져옵니다. 오류가 없으면 OK를 반환합니다. 큐가 비어 있으면 버퍼에 NULL을 반환합니다. 이 경우 장치는 다시 대기열에서 빼기를 시도하기 전에 notify_request_queue_not_empty () 메시지를 기다려야합니다. 이러한 방식으로 얻은 버퍼는 free_request () 를 사용하여 프레임 워크에 반환되어야합니다.
int (* free_request) (const struct camera2_request_queue_src_ops * q, camera_metadata_t * old_buffer) |
int (* request_count) (const struct camera2_request_queue_src_ops * q) |
이 구조체에 대한 문서는 다음 파일에서 생성되었습니다.
- 하드웨어 / libhardware / include / hardware / camera2.h