Camera3_callback_ops 구조체 참조
#include < camera3.h >
데이터 필드 | |
무효의(* | process_capture_result )(const struct Camera3_callback_ops *, const Camera3_capture_result_t *result) |
무효의(* | 알림 )(const struct Camera3_callback_ops *, const Camera3_notify_msg_t *msg) |
상세 설명
현장 문서
void(* 알림)(const struct Camera3_callback_ops *, const Camera3_notify_msg_t *msg) |
통지:
다양한 이유로 인해 HAL의 비동기 알림 콜백이 실행되었습니다. 프레임 캡처와 무관하거나 특정 타이밍이 필요한 정보에만 해당됩니다. 메시지 구조의 소유권은 HAL에 남아 있으며 메시지는 이 호출 기간 동안만 유효하면 됩니다.
여러 스레드가 동시에 inform()을 호출할 수 있습니다.
<= CAMERA_DEVICE_API_VERSION_3_1:
지정된 요청에 대한 노출 시작에 대한 알림은 해당 요청에 대한 process_capture_result() 에 대한 첫 번째 호출이 이루어지기 전에 HAL에서 전송되어야 합니다.
>= CAMERA_DEVICE_API_VERSION_3_2:
프레임워크에 전달된 버퍼는 노출 시작 타임스탬프(또는 재처리 요청에 대한 입력 이미지의 노출 시작 타임스탬프)가 SHUTTER inform() 호출을 통해 수신될 때까지 애플리케이션 계층으로 전달되지 않습니다. 가능한 한 빨리 이 통화를 전달하는 것이 좋습니다.
성능 요건:
이것은 비차단 통화입니다. 프레임워크는 5ms 안에 이 호출을 반환합니다.
void(* process_capture_result)(const struct Camera3_callback_ops *, const Camera3_capture_result_t *result) |
process_capture_result:
완료된 캡처의 결과를 프레임워크로 보냅니다. process_capture_result()는 단일 캡처 요청에 대한 응답으로 HAL에 의해 여러 번 호출될 수 있습니다. 예를 들어, 이를 통해 메타데이터 및 저해상도 버퍼가 한 번의 호출로 반환되고 사후 처리된 JPEG 버퍼가 사용 가능해지면 이후 호출에서 반환될 수 있습니다. 각 호출에는 메타데이터 또는 버퍼를 반환하는 요청의 프레임 번호가 포함되어야 합니다.
전체 결과의 구성 요소(버퍼 또는 메타데이터)는 하나의 process_capture_result 호출에만 포함될 수 있습니다. 출력 중 일부를 생성하는 데 오류가 발생하는 경우에도 process_capture_result 호출 중 하나에서 각 요청에 대해 HAL이 각 스트림에 대한 버퍼와 결과 메타데이터를 반환해야 합니다. 출력 버퍼나 결과 메타데이터가 없는 process_capture_result() 호출은 허용되지 않습니다.
단일 결과에 대한 메타데이터와 버퍼를 반환하는 순서는 중요하지 않지만, 지정된 스트림에 대한 버퍼는 FIFO 순서로 반환되어야 합니다. 따라서 스트림 A에 대한 요청 5에 대한 버퍼는 항상 스트림 A에 대한 요청 6에 대한 버퍼보다 먼저 반환되어야 합니다. 이는 결과 메타데이터에도 적용됩니다. 요청 5에 대한 메타데이터는 요청 6에 대한 메타데이터보다 먼저 반환되어야 합니다.
그러나 서로 다른 스트림은 서로 독립적이므로 스트림 A에 대한 요청 5에 대한 버퍼가 스트림 B에 대한 요청 6에 대한 버퍼 다음에 반환될 수 있다는 것은 허용 가능하고 예상됩니다. 그리고 스트림 B에 대한 요청 6에 대한 결과 메타데이터가 스트림 A에 대한 요청 5에 대한 버퍼보다 먼저 반환되는 것은 허용됩니다.
HAL은 결과 구조의 소유권을 유지하며 이 호출 중에 액세스하려면 유효해야 합니다. 프레임워크는 이 호출이 반환되기 전에 필요한 모든 것을 복사합니다.
출력 버퍼는 아직 채울 필요가 없습니다. 프레임워크는 버퍼 데이터를 읽기 전에 스트림 버퍼 릴리스 동기화 펜스를 기다립니다. 따라서 이 메서드는 출력 버퍼의 일부 또는 전체가 아직 채워지는 경우에도 HAL에서 가능한 한 빨리 호출해야 합니다. HAL은 각 output_buffers 스트림 버퍼 항목에 유효한 릴리스 동기화 펜스를 포함해야 하며, 해당 스트림 버퍼가 이미 채워진 경우에는 -1을 포함해야 합니다.
요청에 대해 결과 버퍼를 생성할 수 없는 경우 HAL은 빈 메타데이터 버퍼를 반환해야 하지만 여전히 출력 버퍼와 해당 동기화 펜스를 제공해야 합니다. 또한, ERROR_RESULT 메시지와 함께 inform()을 호출해야 합니다.
출력 버퍼를 채울 수 없는 경우 해당 상태 필드를 STATUS_ERROR로 설정해야 합니다. 또한 ERROR_BUFFER 메시지와 함께 inform()을 호출해야 합니다.
전체 캡처가 실패한 경우에도 출력 버퍼를 프레임워크에 반환하려면 이 메서드를 호출해야 합니다. 모든 버퍼 상태는 STATUS_ERROR여야 하며, 결과 메타데이터는 빈 버퍼여야 합니다. 또한 ERROR_REQUEST 메시지와 함께 inform()을 호출해야 합니다. 이 경우 개별 ERROR_RESULT/ERROR_BUFFER 메시지를 보내서는 안 됩니다.
성능 요건:
이것은 비차단 통화입니다. 프레임워크는 5ms 안에 이 호출을 반환합니다.
파이프라인 대기 시간(정의는 S7 참조)은 4프레임 간격 이하여야 하며, 8프레임 간격 이하여야 합니다.
이 구조체에 대한 문서는 다음 파일에서 생성되었습니다.