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()를 다시 호출해야 합니다. 기기가 dequeue에서 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() 호출과 동일한 스레드에 있을 수 있으며 notify 호출 내에서 실행될 수 있습니다.
- 오류가 발생하거나 기기 플러시가 요청되거나 기기가 종료되는 경우를 포함하여 모든 큐에서 제거된 요청 버퍼는 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) |
이 구조체에 관한 문서는 다음 파일에서 생성되었습니다.
- hardware/libhardware/include/hardware/ camera2.h