Loading services/camera/libcameraservice/device3/Camera3Device.cpp +24 −4 Original line number Diff line number Diff line Loading @@ -77,8 +77,10 @@ Camera3Device::Camera3Device(const String8 &id): mTimestampOffset(0), mNextResultFrameNumber(0), mNextReprocessResultFrameNumber(0), mNextZslStillResultFrameNumber(0), mNextShutterFrameNumber(0), mNextReprocessShutterFrameNumber(0), mNextZslStillShutterFrameNumber(0), mListener(NULL), mVendorTagId(CAMERA_METADATA_INVALID_VENDOR_ID), mLastTemplateId(-1), Loading Loading @@ -3464,7 +3466,7 @@ void Camera3Device::sendCaptureResult(CameraMetadata &pendingMetadata, CaptureResultExtras &resultExtras, CameraMetadata &collectedPartialResult, uint32_t frameNumber, bool reprocess, bool reprocess, bool zslStillCapture, const std::vector<PhysicalCaptureResultInfo>& physicalMetadatas) { ATRACE_CALL(); if (pendingMetadata.isEmpty()) Loading @@ -3481,6 +3483,14 @@ void Camera3Device::sendCaptureResult(CameraMetadata &pendingMetadata, return; } mNextReprocessResultFrameNumber = frameNumber + 1; } else if (zslStillCapture) { if (frameNumber < mNextZslStillResultFrameNumber) { SET_ERR("Out-of-order ZSL still capture result metadata submitted! " "(got frame number %d, expecting %d)", frameNumber, mNextZslStillResultFrameNumber); return; } mNextZslStillResultFrameNumber = frameNumber + 1; } else { if (frameNumber < mNextResultFrameNumber) { SET_ERR("Out-of-order capture result metadata submitted! " Loading Loading @@ -3741,7 +3751,8 @@ void Camera3Device::processCaptureResult(const camera3_capture_result *result) { metadata = result->result; sendCaptureResult(metadata, request.resultExtras, collectedPartialResult, frameNumber, hasInputBufferInRequest, request.physicalMetadatas); hasInputBufferInRequest, request.zslCapture && request.stillCapture, request.physicalMetadatas); } } Loading Loading @@ -3919,12 +3930,20 @@ void Camera3Device::notifyShutter(const camera3_shutter_msg_t &msg, // TODO: need to track errors for tighter bounds on expected frame number. if (r.hasInputBuffer) { if (msg.frame_number < mNextReprocessShutterFrameNumber) { SET_ERR("Shutter notification out-of-order. Expected " SET_ERR("Reprocess shutter notification out-of-order. Expected " "notification for frame %d, got frame %d", mNextReprocessShutterFrameNumber, msg.frame_number); return; } mNextReprocessShutterFrameNumber = msg.frame_number + 1; } else if (r.zslCapture && r.stillCapture) { if (msg.frame_number < mNextZslStillShutterFrameNumber) { SET_ERR("ZSL still capture shutter notification out-of-order. Expected " "notification for frame %d, got frame %d", mNextZslStillShutterFrameNumber, msg.frame_number); return; } mNextZslStillShutterFrameNumber = msg.frame_number + 1; } else { if (msg.frame_number < mNextShutterFrameNumber) { SET_ERR("Shutter notification out-of-order. Expected " Loading @@ -3948,7 +3967,8 @@ void Camera3Device::notifyShutter(const camera3_shutter_msg_t &msg, // send pending result and buffers sendCaptureResult(r.pendingMetadata, r.resultExtras, r.collectedPartialResult, msg.frame_number, r.hasInputBuffer, r.physicalMetadatas); r.hasInputBuffer, r.zslCapture && r.stillCapture, r.physicalMetadatas); } bool timestampIncreasing = !(r.zslCapture || r.hasInputBuffer); returnOutputBuffers(r.pendingOutputBuffers.array(), Loading services/camera/libcameraservice/device3/Camera3Device.h +6 −1 Original line number Diff line number Diff line Loading @@ -1186,10 +1186,14 @@ class Camera3Device : uint32_t mNextResultFrameNumber; // the minimal frame number of the next reprocess result uint32_t mNextReprocessResultFrameNumber; // the minimal frame number of the next ZSL still capture result uint32_t mNextZslStillResultFrameNumber; // the minimal frame number of the next non-reprocess shutter uint32_t mNextShutterFrameNumber; // the minimal frame number of the next reprocess shutter uint32_t mNextReprocessShutterFrameNumber; // the minimal frame number of the next ZSL still capture shutter uint32_t mNextZslStillShutterFrameNumber; List<CaptureResult> mResultQueue; Condition mResultSignal; wp<NotificationListener> mListener; Loading Loading @@ -1226,7 +1230,8 @@ class Camera3Device : void sendCaptureResult(CameraMetadata &pendingMetadata, CaptureResultExtras &resultExtras, CameraMetadata &collectedPartialResult, uint32_t frameNumber, bool reprocess, const std::vector<PhysicalCaptureResultInfo>& physicalMetadatas); bool reprocess, bool zslStillCapture, const std::vector<PhysicalCaptureResultInfo>& physicalMetadatas); bool isLastFullResult(const InFlightRequest& inFlightRequest); Loading Loading
services/camera/libcameraservice/device3/Camera3Device.cpp +24 −4 Original line number Diff line number Diff line Loading @@ -77,8 +77,10 @@ Camera3Device::Camera3Device(const String8 &id): mTimestampOffset(0), mNextResultFrameNumber(0), mNextReprocessResultFrameNumber(0), mNextZslStillResultFrameNumber(0), mNextShutterFrameNumber(0), mNextReprocessShutterFrameNumber(0), mNextZslStillShutterFrameNumber(0), mListener(NULL), mVendorTagId(CAMERA_METADATA_INVALID_VENDOR_ID), mLastTemplateId(-1), Loading Loading @@ -3464,7 +3466,7 @@ void Camera3Device::sendCaptureResult(CameraMetadata &pendingMetadata, CaptureResultExtras &resultExtras, CameraMetadata &collectedPartialResult, uint32_t frameNumber, bool reprocess, bool reprocess, bool zslStillCapture, const std::vector<PhysicalCaptureResultInfo>& physicalMetadatas) { ATRACE_CALL(); if (pendingMetadata.isEmpty()) Loading @@ -3481,6 +3483,14 @@ void Camera3Device::sendCaptureResult(CameraMetadata &pendingMetadata, return; } mNextReprocessResultFrameNumber = frameNumber + 1; } else if (zslStillCapture) { if (frameNumber < mNextZslStillResultFrameNumber) { SET_ERR("Out-of-order ZSL still capture result metadata submitted! " "(got frame number %d, expecting %d)", frameNumber, mNextZslStillResultFrameNumber); return; } mNextZslStillResultFrameNumber = frameNumber + 1; } else { if (frameNumber < mNextResultFrameNumber) { SET_ERR("Out-of-order capture result metadata submitted! " Loading Loading @@ -3741,7 +3751,8 @@ void Camera3Device::processCaptureResult(const camera3_capture_result *result) { metadata = result->result; sendCaptureResult(metadata, request.resultExtras, collectedPartialResult, frameNumber, hasInputBufferInRequest, request.physicalMetadatas); hasInputBufferInRequest, request.zslCapture && request.stillCapture, request.physicalMetadatas); } } Loading Loading @@ -3919,12 +3930,20 @@ void Camera3Device::notifyShutter(const camera3_shutter_msg_t &msg, // TODO: need to track errors for tighter bounds on expected frame number. if (r.hasInputBuffer) { if (msg.frame_number < mNextReprocessShutterFrameNumber) { SET_ERR("Shutter notification out-of-order. Expected " SET_ERR("Reprocess shutter notification out-of-order. Expected " "notification for frame %d, got frame %d", mNextReprocessShutterFrameNumber, msg.frame_number); return; } mNextReprocessShutterFrameNumber = msg.frame_number + 1; } else if (r.zslCapture && r.stillCapture) { if (msg.frame_number < mNextZslStillShutterFrameNumber) { SET_ERR("ZSL still capture shutter notification out-of-order. Expected " "notification for frame %d, got frame %d", mNextZslStillShutterFrameNumber, msg.frame_number); return; } mNextZslStillShutterFrameNumber = msg.frame_number + 1; } else { if (msg.frame_number < mNextShutterFrameNumber) { SET_ERR("Shutter notification out-of-order. Expected " Loading @@ -3948,7 +3967,8 @@ void Camera3Device::notifyShutter(const camera3_shutter_msg_t &msg, // send pending result and buffers sendCaptureResult(r.pendingMetadata, r.resultExtras, r.collectedPartialResult, msg.frame_number, r.hasInputBuffer, r.physicalMetadatas); r.hasInputBuffer, r.zslCapture && r.stillCapture, r.physicalMetadatas); } bool timestampIncreasing = !(r.zslCapture || r.hasInputBuffer); returnOutputBuffers(r.pendingOutputBuffers.array(), Loading
services/camera/libcameraservice/device3/Camera3Device.h +6 −1 Original line number Diff line number Diff line Loading @@ -1186,10 +1186,14 @@ class Camera3Device : uint32_t mNextResultFrameNumber; // the minimal frame number of the next reprocess result uint32_t mNextReprocessResultFrameNumber; // the minimal frame number of the next ZSL still capture result uint32_t mNextZslStillResultFrameNumber; // the minimal frame number of the next non-reprocess shutter uint32_t mNextShutterFrameNumber; // the minimal frame number of the next reprocess shutter uint32_t mNextReprocessShutterFrameNumber; // the minimal frame number of the next ZSL still capture shutter uint32_t mNextZslStillShutterFrameNumber; List<CaptureResult> mResultQueue; Condition mResultSignal; wp<NotificationListener> mListener; Loading Loading @@ -1226,7 +1230,8 @@ class Camera3Device : void sendCaptureResult(CameraMetadata &pendingMetadata, CaptureResultExtras &resultExtras, CameraMetadata &collectedPartialResult, uint32_t frameNumber, bool reprocess, const std::vector<PhysicalCaptureResultInfo>& physicalMetadatas); bool reprocess, bool zslStillCapture, const std::vector<PhysicalCaptureResultInfo>& physicalMetadatas); bool isLastFullResult(const InFlightRequest& inFlightRequest); Loading