|
|
|
@ -48,15 +48,7 @@ static void onDisconnected(void* context, ACameraDevice* device)
|
|
|
|
|
|
|
|
|
|
static void onError(void* context, ACameraDevice* device, int error)
|
|
|
|
|
{
|
|
|
|
|
if (ACAMERA_ERROR_CAMERA_DEVICE == error)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
XYLOG(XYLOG_SEVERITY_ERROR, "CameraStatus::onError CameraId: %s err=%d", ACameraDevice_getId(device), error);
|
|
|
|
|
std::string msg = "NdkCamera error code=" + std::to_string(error);
|
|
|
|
|
((NdkCamera*)context)->on_error(msg);
|
|
|
|
|
// __android_log_print(ANDROID_LOG_WARN, "NdkCamera", "onError %p %d", device, error);
|
|
|
|
|
((NdkCamera*)context)->onError(device, error);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void onImageAvailable(void* context, AImageReader* reader)
|
|
|
|
@ -113,6 +105,7 @@ NdkCamera::NdkCamera(int32_t width, int32_t height, const NdkCamera::CAMERA_PARA
|
|
|
|
|
|
|
|
|
|
m_params = params;
|
|
|
|
|
m_firstFrame = true;
|
|
|
|
|
m_photoTaken = false;
|
|
|
|
|
mWidth = width;
|
|
|
|
|
mHeight = height;
|
|
|
|
|
|
|
|
|
@ -551,7 +544,7 @@ int NdkCamera::open(const std::string& cameraId) {
|
|
|
|
|
ACameraDevice_StateCallbacks camera_device_state_callbacks;
|
|
|
|
|
camera_device_state_callbacks.context = this;
|
|
|
|
|
camera_device_state_callbacks.onDisconnected = ::onDisconnected;
|
|
|
|
|
camera_device_state_callbacks.onError = onError;
|
|
|
|
|
camera_device_state_callbacks.onError = ::onError;
|
|
|
|
|
|
|
|
|
|
status = ACameraManager_openCamera(camera_manager, cameraId.c_str(), &camera_device_state_callbacks, &camera_device);
|
|
|
|
|
if (status != ACAMERA_OK)
|
|
|
|
@ -979,6 +972,7 @@ void NdkCamera::onImageAvailable(AImageReader* reader)
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
m_photoTaken = true;
|
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "Photo Taken: AES=%u AFS=%u AWBS=%u", (uint32_t)mFinalResult.aeState, (uint32_t)mFinalResult.awbState, (uint32_t)mFinalResult.afState);
|
|
|
|
|
|
|
|
|
|
mFinalResult.duration = GetMicroTimeStamp() - m_startTime;
|
|
|
|
@ -1524,9 +1518,26 @@ void NdkCamera::onCaptureFailed(ACameraCaptureSession* session, ACaptureRequest*
|
|
|
|
|
XYLOG(XYLOG_SEVERITY_WARNING, "onCaptureFailed session=%p request=%p reason=%d", session, request, failure->reason);
|
|
|
|
|
|
|
|
|
|
char msg[32] = { 0 };
|
|
|
|
|
snprintf(msg, sizeof(msg), "CaptureFailed reason=%d", failure->reason);
|
|
|
|
|
snprintf(msg, sizeof(msg), "CaptureFailed reason=%d PhotoTaken=%d", failure->reason, m_photoTaken ? 1 : 0);
|
|
|
|
|
if (!m_photoTaken)
|
|
|
|
|
{
|
|
|
|
|
on_error(msg);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void NdkCamera::onError(ACameraDevice* device, int error)
|
|
|
|
|
{
|
|
|
|
|
if (ACAMERA_ERROR_CAMERA_DEVICE == error)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
XYLOG(XYLOG_SEVERITY_ERROR, "CameraStatus::onError CameraId: %s err=%d PhotoTaken=%d", ACameraDevice_getId(device), error, m_photoTaken ? 1 : 0);
|
|
|
|
|
if (!m_photoTaken)
|
|
|
|
|
{
|
|
|
|
|
std::string msg = "NdkCamera error code=" + std::to_string(error);
|
|
|
|
|
on_error(msg);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void NdkCamera::onAvailabilityCallback(const char* cameraId)
|
|
|
|
|
{
|
|
|
|
|