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