camera3_callback_ops 구조체 참조

camera3_callback_ops 구조체 참조

#include < camera3.h >

데이터 필드

void(*  process_capture_result )(const struct camera3_callback_ops *, const camera3_capture_result_t *result)
 
void(*  notify )(const struct camera3_callback_ops *, const camera3_notify_msg_t *msg)
 

상세 설명

camera3.h 파일의 2397 번째 줄에 정의되어 있습니다.

필드 문서

void(* notify)(const struct camera3_callback_ops *, const camera3_notify_msg_t *msg)

알림:

다양한 이유로 실행되는 HAL의 비동기 알림 콜백입니다. 프레임 캡처와 무관하거나 특정 타이밍이 필요한 정보에만 사용됩니다. 메시지 구조의 소유권은 HAL에 유지되며 msg는 이 호출이 지속되는 동안만 유효하면 됩니다.

여러 스레드가 동시에 notify() 를 호출할 수 있습니다.

<= CAMERA_DEVICE_API_VERSION_3_1:

특정 요청의 노출 시작 알림은 해당 요청에 대한 process_capture_result() 의 첫 번째 호출이 이루어지기 전에 HAL에서 전송해야 합니다.

>= CAMERA_DEVICE_API_VERSION_3_2:

프레임워크에 전달된 버퍼는 노출 시작 타임스탬프 (또는 재처리 요청의 입력 이미지 노출 시작 타임스탬프)가 SHUTTER notify() 호출을 통해 수신될 때까지 애플리케이션 레이어로 디스패치되지 않습니다. 이 호출은 최대한 빨리 디스패치하는 것이 좋습니다.


성능 요구사항:

이는 비차단 호출입니다. 프레임워크는 이 호출을 5ms 내에 반환합니다.

camera3.h 파일의 2499 번째 줄에 정의되어 있습니다.

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 버퍼보다 먼저 반환되어야 합니다. 결과 메타데이터에도 적용됩니다. 요청 6의 메타데이터보다 요청 5의 메타데이터가 먼저 반환되어야 합니다.

하지만 스트림은 서로 독립적이므로 스트림 A의 요청 5 버퍼가 스트림 B의 요청 6 버퍼보다 늦게 반환되어도 괜찮습니다. 스트림 B의 요청 6 결과 메타데이터가 스트림 A의 요청 5 버퍼보다 먼저 반환되어도 괜찮습니다.

HAL은 결과 구조체의 소유권을 유지하며 이 호출 중에 액세스할 때만 유효하면 됩니다. 프레임워크는 이 호출이 반환되기 전에 필요한 모든 것을 복사합니다.

출력 버퍼는 아직 채울 필요가 없습니다. 프레임워크는 스트림 버퍼 출시 동기화 펜스를 기다린 후 버퍼 데이터를 읽습니다. 따라서 일부 또는 모든 출력 버퍼가 아직 채워지고 있더라도 HAL에서 이 메서드를 최대한 빨리 호출해야 합니다. HAL은 각 output_buffers 스트림 버퍼 항목에 유효한 출시 동기화 펜스를 포함해야 합니다. 스트림 버퍼가 이미 채워진 경우에는 -1을 포함해야 합니다.

요청에 대해 결과 버퍼를 구성할 수 없는 경우 HAL은 빈 메타데이터 버퍼를 반환해야 하지만 출력 버퍼와 동기화 펜스는 계속 제공해야 합니다. 또한 notify() 는 ERROR_RESULT 메시지와 함께 호출해야 합니다.

출력 버퍼를 채울 수 없는 경우 상태 필드를 STATUS_ERROR로 설정해야 합니다. 또한 notify() 는 ERROR_BUFFER 메시지와 함께 호출해야 합니다.

전체 캡처가 실패한 경우에도 출력 버퍼를 프레임워크에 반환하기 위해 이 메서드를 호출해야 합니다. 모든 버퍼 상태는 STATUS_ERROR여야 하고 결과 메타데이터는 빈 버퍼여야 합니다. 또한 notify() 는 ERROR_REQUEST 메시지와 함께 호출해야 합니다. 이 경우 개별 ERROR_RESULT/ERROR_BUFFER 메시지를 전송하면 안 됩니다.

성능 요구사항:

이는 비차단 호출입니다. 프레임워크는 이 호출을 5ms 내에 반환합니다.

파이프라인 지연 시간 (정의는 S7 참고)은 프레임 간격의 4배 이하여야 하며 프레임 간격의 8배 이하여야 합니다.

camera3.h 파일의 2466 번째 줄에 정의되어 있습니다.


이 구조체의 문서는 다음 파일에서 생성되었습니다.