Loading services/camera/libcameraservice/device3/Camera3Device.cpp +16 −3 Original line number Diff line number Diff line Loading @@ -2738,13 +2738,13 @@ void Camera3Device::setErrorStateLockedV(const char *fmt, va_list args) { status_t Camera3Device::registerInFlight(uint32_t frameNumber, int32_t numBuffers, CaptureResultExtras resultExtras, bool hasInput, bool hasAppCallback, nsecs_t maxExpectedDuration, std::set<String8>& physicalCameraIds) { std::set<String8>& physicalCameraIds, bool isStillCapture) { ATRACE_CALL(); Mutex::Autolock l(mInFlightLock); ssize_t res; res = mInFlightMap.add(frameNumber, InFlightRequest(numBuffers, resultExtras, hasInput, hasAppCallback, maxExpectedDuration, physicalCameraIds)); hasAppCallback, maxExpectedDuration, physicalCameraIds, isStillCapture)); if (res < 0) return res; if (mInFlightMap.size() == 1) { Loading Loading @@ -2810,6 +2810,10 @@ void Camera3Device::removeInFlightRequestIfReadyLocked(int idx) { if (request.numBuffersLeft == 0 && (request.skipResultMetadata || (request.haveResultMetadata && shutterTimestamp != 0))) { if (request.stillCapture) { ATRACE_ASYNC_END("still capture", frameNumber); } ATRACE_ASYNC_END("frame capture", frameNumber); // Sanity check - if sensor timestamp matches shutter timestamp in the Loading Loading @@ -4939,12 +4943,21 @@ status_t Camera3Device::RequestThread::prepareHalRequests() { if (batchedRequest && i != mNextRequests.size()-1) { hasCallback = false; } bool isStillCapture = false; if (!mNextRequests[0].captureRequest->mSettingsList.begin()->metadata.isEmpty()) { camera_metadata_ro_entry_t e = camera_metadata_ro_entry_t(); find_camera_metadata_ro_entry(halRequest->settings, ANDROID_CONTROL_CAPTURE_INTENT, &e); if ((e.count > 0) && (e.data.u8[0] == ANDROID_CONTROL_CAPTURE_INTENT_STILL_CAPTURE)) { isStillCapture = true; ATRACE_ASYNC_BEGIN("still capture", mNextRequests[i].halRequest.frame_number); } } res = parent->registerInFlight(halRequest->frame_number, totalNumBuffers, captureRequest->mResultExtras, /*hasInput*/halRequest->input_buffer != NULL, hasCallback, calculateMaxExpectedDuration(halRequest->settings), requestedPhysicalCameras); requestedPhysicalCameras, isStillCapture); ALOGVV("%s: registered in flight requestId = %" PRId32 ", frameNumber = %" PRId64 ", burstId = %" PRId32 ".", __FUNCTION__, Loading services/camera/libcameraservice/device3/Camera3Device.h +10 −5 Original line number Diff line number Diff line Loading @@ -994,6 +994,9 @@ class Camera3Device : // Map of physicalCameraId <-> Metadata std::vector<PhysicalCaptureResultInfo> physicalMetadatas; // Indicates a still capture request. bool stillCapture; // Default constructor needed by KeyedVector InFlightRequest() : shutterTimestamp(0), Loading @@ -1004,12 +1007,13 @@ class Camera3Device : hasInputBuffer(false), hasCallback(true), maxExpectedDuration(kDefaultExpectedDuration), skipResultMetadata(false) { skipResultMetadata(false), stillCapture(false) { } InFlightRequest(int numBuffers, CaptureResultExtras extras, bool hasInput, bool hasAppCallback, nsecs_t maxDuration, const std::set<String8>& physicalCameraIdSet) : const std::set<String8>& physicalCameraIdSet, bool isStillCapture) : shutterTimestamp(0), sensorTimestamp(0), requestStatus(OK), Loading @@ -1020,7 +1024,8 @@ class Camera3Device : hasCallback(hasAppCallback), maxExpectedDuration(maxDuration), skipResultMetadata(false), physicalCameraIds(physicalCameraIdSet) { physicalCameraIds(physicalCameraIdSet), stillCapture(isStillCapture) { } }; Loading @@ -1034,10 +1039,10 @@ class Camera3Device : nsecs_t mExpectedInflightDuration = 0; int mInFlightStatusId; status_t registerInFlight(uint32_t frameNumber, int32_t numBuffers, CaptureResultExtras resultExtras, bool hasInput, bool callback, nsecs_t maxExpectedDuration, std::set<String8>& physicalCameraIds); bool callback, nsecs_t maxExpectedDuration, std::set<String8>& physicalCameraIds, bool isStillCapture); /** * Returns the maximum expected time it'll take for all currently in-flight Loading Loading
services/camera/libcameraservice/device3/Camera3Device.cpp +16 −3 Original line number Diff line number Diff line Loading @@ -2738,13 +2738,13 @@ void Camera3Device::setErrorStateLockedV(const char *fmt, va_list args) { status_t Camera3Device::registerInFlight(uint32_t frameNumber, int32_t numBuffers, CaptureResultExtras resultExtras, bool hasInput, bool hasAppCallback, nsecs_t maxExpectedDuration, std::set<String8>& physicalCameraIds) { std::set<String8>& physicalCameraIds, bool isStillCapture) { ATRACE_CALL(); Mutex::Autolock l(mInFlightLock); ssize_t res; res = mInFlightMap.add(frameNumber, InFlightRequest(numBuffers, resultExtras, hasInput, hasAppCallback, maxExpectedDuration, physicalCameraIds)); hasAppCallback, maxExpectedDuration, physicalCameraIds, isStillCapture)); if (res < 0) return res; if (mInFlightMap.size() == 1) { Loading Loading @@ -2810,6 +2810,10 @@ void Camera3Device::removeInFlightRequestIfReadyLocked(int idx) { if (request.numBuffersLeft == 0 && (request.skipResultMetadata || (request.haveResultMetadata && shutterTimestamp != 0))) { if (request.stillCapture) { ATRACE_ASYNC_END("still capture", frameNumber); } ATRACE_ASYNC_END("frame capture", frameNumber); // Sanity check - if sensor timestamp matches shutter timestamp in the Loading Loading @@ -4939,12 +4943,21 @@ status_t Camera3Device::RequestThread::prepareHalRequests() { if (batchedRequest && i != mNextRequests.size()-1) { hasCallback = false; } bool isStillCapture = false; if (!mNextRequests[0].captureRequest->mSettingsList.begin()->metadata.isEmpty()) { camera_metadata_ro_entry_t e = camera_metadata_ro_entry_t(); find_camera_metadata_ro_entry(halRequest->settings, ANDROID_CONTROL_CAPTURE_INTENT, &e); if ((e.count > 0) && (e.data.u8[0] == ANDROID_CONTROL_CAPTURE_INTENT_STILL_CAPTURE)) { isStillCapture = true; ATRACE_ASYNC_BEGIN("still capture", mNextRequests[i].halRequest.frame_number); } } res = parent->registerInFlight(halRequest->frame_number, totalNumBuffers, captureRequest->mResultExtras, /*hasInput*/halRequest->input_buffer != NULL, hasCallback, calculateMaxExpectedDuration(halRequest->settings), requestedPhysicalCameras); requestedPhysicalCameras, isStillCapture); ALOGVV("%s: registered in flight requestId = %" PRId32 ", frameNumber = %" PRId64 ", burstId = %" PRId32 ".", __FUNCTION__, Loading
services/camera/libcameraservice/device3/Camera3Device.h +10 −5 Original line number Diff line number Diff line Loading @@ -994,6 +994,9 @@ class Camera3Device : // Map of physicalCameraId <-> Metadata std::vector<PhysicalCaptureResultInfo> physicalMetadatas; // Indicates a still capture request. bool stillCapture; // Default constructor needed by KeyedVector InFlightRequest() : shutterTimestamp(0), Loading @@ -1004,12 +1007,13 @@ class Camera3Device : hasInputBuffer(false), hasCallback(true), maxExpectedDuration(kDefaultExpectedDuration), skipResultMetadata(false) { skipResultMetadata(false), stillCapture(false) { } InFlightRequest(int numBuffers, CaptureResultExtras extras, bool hasInput, bool hasAppCallback, nsecs_t maxDuration, const std::set<String8>& physicalCameraIdSet) : const std::set<String8>& physicalCameraIdSet, bool isStillCapture) : shutterTimestamp(0), sensorTimestamp(0), requestStatus(OK), Loading @@ -1020,7 +1024,8 @@ class Camera3Device : hasCallback(hasAppCallback), maxExpectedDuration(maxDuration), skipResultMetadata(false), physicalCameraIds(physicalCameraIdSet) { physicalCameraIds(physicalCameraIdSet), stillCapture(isStillCapture) { } }; Loading @@ -1034,10 +1039,10 @@ class Camera3Device : nsecs_t mExpectedInflightDuration = 0; int mInFlightStatusId; status_t registerInFlight(uint32_t frameNumber, int32_t numBuffers, CaptureResultExtras resultExtras, bool hasInput, bool callback, nsecs_t maxExpectedDuration, std::set<String8>& physicalCameraIds); bool callback, nsecs_t maxExpectedDuration, std::set<String8>& physicalCameraIds, bool isStillCapture); /** * Returns the maximum expected time it'll take for all currently in-flight Loading