Loading services/camera/libcameraservice/camera2/CaptureSequencer.cpp +6 −34 Original line number Original line Diff line number Diff line Loading @@ -586,40 +586,12 @@ status_t CaptureSequencer::updateCaptureRequest(const Parameters ¶ms, return res; return res; } } res = mCaptureRequest.update(ANDROID_JPEG_THUMBNAIL_SIZE, res = params.updateRequestJpeg(&mCaptureRequest); params.jpegThumbSize, 2); if (res != OK) { if (res != OK) return res; ALOGE("%s: Camera %d: Unable to update JPEG entries of capture " res = mCaptureRequest.update(ANDROID_JPEG_THUMBNAIL_QUALITY, "request: %s (%d)", __FUNCTION__, client->getCameraId(), ¶ms.jpegThumbQuality, 1); strerror(-res), res); if (res != OK) return res; return res; res = mCaptureRequest.update(ANDROID_JPEG_QUALITY, ¶ms.jpegQuality, 1); if (res != OK) return res; res = mCaptureRequest.update( ANDROID_JPEG_ORIENTATION, ¶ms.jpegRotation, 1); if (res != OK) return res; if (params.gpsEnabled) { res = mCaptureRequest.update( ANDROID_JPEG_GPS_COORDINATES, params.gpsCoordinates, 3); if (res != OK) return res; res = mCaptureRequest.update( ANDROID_JPEG_GPS_TIMESTAMP, ¶ms.gpsTimestamp, 1); if (res != OK) return res; res = mCaptureRequest.update( ANDROID_JPEG_GPS_PROCESSING_METHOD, params.gpsProcessingMethod); if (res != OK) return res; } else { res = mCaptureRequest.erase(ANDROID_JPEG_GPS_COORDINATES); if (res != OK) return res; res = mCaptureRequest.erase(ANDROID_JPEG_GPS_TIMESTAMP); if (res != OK) return res; res = mCaptureRequest.erase(ANDROID_JPEG_GPS_PROCESSING_METHOD); if (res != OK) return res; } } return OK; return OK; Loading services/camera/libcameraservice/camera2/Parameters.cpp +42 −0 Original line number Original line Diff line number Diff line Loading @@ -1668,6 +1668,48 @@ status_t Parameters::updateRequest(CameraMetadata *request) const { return OK; return OK; } } status_t Parameters::updateRequestJpeg(CameraMetadata *request) const { status_t res; res = request->update(ANDROID_JPEG_THUMBNAIL_SIZE, jpegThumbSize, 2); if (res != OK) return res; res = request->update(ANDROID_JPEG_THUMBNAIL_QUALITY, &jpegThumbQuality, 1); if (res != OK) return res; res = request->update(ANDROID_JPEG_QUALITY, &jpegQuality, 1); if (res != OK) return res; res = request->update( ANDROID_JPEG_ORIENTATION, &jpegRotation, 1); if (res != OK) return res; if (gpsEnabled) { res = request->update( ANDROID_JPEG_GPS_COORDINATES, gpsCoordinates, 3); if (res != OK) return res; res = request->update( ANDROID_JPEG_GPS_TIMESTAMP, &gpsTimestamp, 1); if (res != OK) return res; res = request->update( ANDROID_JPEG_GPS_PROCESSING_METHOD, gpsProcessingMethod); if (res != OK) return res; } else { res = request->erase(ANDROID_JPEG_GPS_COORDINATES); if (res != OK) return res; res = request->erase(ANDROID_JPEG_GPS_TIMESTAMP); if (res != OK) return res; res = request->erase(ANDROID_JPEG_GPS_PROCESSING_METHOD); if (res != OK) return res; } return OK; } const char* Parameters::getStateName(State state) { const char* Parameters::getStateName(State state) { #define CASE_ENUM_TO_CHAR(x) case x: return(#x); break; #define CASE_ENUM_TO_CHAR(x) case x: return(#x); break; switch(state) { switch(state) { Loading services/camera/libcameraservice/camera2/Parameters.h +3 −0 Original line number Original line Diff line number Diff line Loading @@ -216,6 +216,9 @@ struct Parameters { // Update passed-in request for common parameters // Update passed-in request for common parameters status_t updateRequest(CameraMetadata *request) const; status_t updateRequest(CameraMetadata *request) const; // Add/update JPEG entries in metadata status_t updateRequestJpeg(CameraMetadata *request) const; // Calculate the crop region rectangle based on current stream sizes // Calculate the crop region rectangle based on current stream sizes struct CropRegion { struct CropRegion { float left; float left; Loading services/camera/libcameraservice/camera2/ZslProcessor.cpp +22 −0 Original line number Original line Diff line number Diff line Loading @@ -313,6 +313,20 @@ status_t ZslProcessor::pushToReprocess(int32_t requestId) { return res; return res; } } // Update JPEG settings { SharedParameters::Lock l(client->getParameters()); res = l.mParameters.updateRequestJpeg(&request); if (res != OK) { ALOGE("%s: Camera %d: Unable to update JPEG entries of ZSL " "capture request: %s (%d)", __FUNCTION__, client->getCameraId(), strerror(-res), res); return res; } } mLatestCapturedRequest = request; res = client->getCameraDevice()->capture(request); res = client->getCameraDevice()->capture(request); if (res != OK ) { if (res != OK ) { ALOGE("%s: Unable to send ZSL reprocess request to capture: %s (%d)", ALOGE("%s: Unable to send ZSL reprocess request to capture: %s (%d)", Loading Loading @@ -350,6 +364,14 @@ status_t ZslProcessor::clearZslQueueLocked() { void ZslProcessor::dump(int fd, const Vector<String16>& args) const { void ZslProcessor::dump(int fd, const Vector<String16>& args) const { Mutex::Autolock l(mInputMutex); Mutex::Autolock l(mInputMutex); if (!mLatestCapturedRequest.isEmpty()) { String8 result(" Latest ZSL capture request:\n"); write(fd, result.string(), result.size()); mLatestCapturedRequest.dump(fd, 2, 6); } else { String8 result(" Latest ZSL capture request: none yet\n"); write(fd, result.string(), result.size()); } dumpZslQueue(fd); dumpZslQueue(fd); } } Loading services/camera/libcameraservice/camera2/ZslProcessor.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -105,6 +105,8 @@ class ZslProcessor: size_t mZslQueueHead; size_t mZslQueueHead; size_t mZslQueueTail; size_t mZslQueueTail; CameraMetadata mLatestCapturedRequest; virtual bool threadLoop(); virtual bool threadLoop(); status_t processNewZslBuffer(sp<Camera2Client> &client); status_t processNewZslBuffer(sp<Camera2Client> &client); Loading Loading
services/camera/libcameraservice/camera2/CaptureSequencer.cpp +6 −34 Original line number Original line Diff line number Diff line Loading @@ -586,40 +586,12 @@ status_t CaptureSequencer::updateCaptureRequest(const Parameters ¶ms, return res; return res; } } res = mCaptureRequest.update(ANDROID_JPEG_THUMBNAIL_SIZE, res = params.updateRequestJpeg(&mCaptureRequest); params.jpegThumbSize, 2); if (res != OK) { if (res != OK) return res; ALOGE("%s: Camera %d: Unable to update JPEG entries of capture " res = mCaptureRequest.update(ANDROID_JPEG_THUMBNAIL_QUALITY, "request: %s (%d)", __FUNCTION__, client->getCameraId(), ¶ms.jpegThumbQuality, 1); strerror(-res), res); if (res != OK) return res; return res; res = mCaptureRequest.update(ANDROID_JPEG_QUALITY, ¶ms.jpegQuality, 1); if (res != OK) return res; res = mCaptureRequest.update( ANDROID_JPEG_ORIENTATION, ¶ms.jpegRotation, 1); if (res != OK) return res; if (params.gpsEnabled) { res = mCaptureRequest.update( ANDROID_JPEG_GPS_COORDINATES, params.gpsCoordinates, 3); if (res != OK) return res; res = mCaptureRequest.update( ANDROID_JPEG_GPS_TIMESTAMP, ¶ms.gpsTimestamp, 1); if (res != OK) return res; res = mCaptureRequest.update( ANDROID_JPEG_GPS_PROCESSING_METHOD, params.gpsProcessingMethod); if (res != OK) return res; } else { res = mCaptureRequest.erase(ANDROID_JPEG_GPS_COORDINATES); if (res != OK) return res; res = mCaptureRequest.erase(ANDROID_JPEG_GPS_TIMESTAMP); if (res != OK) return res; res = mCaptureRequest.erase(ANDROID_JPEG_GPS_PROCESSING_METHOD); if (res != OK) return res; } } return OK; return OK; Loading
services/camera/libcameraservice/camera2/Parameters.cpp +42 −0 Original line number Original line Diff line number Diff line Loading @@ -1668,6 +1668,48 @@ status_t Parameters::updateRequest(CameraMetadata *request) const { return OK; return OK; } } status_t Parameters::updateRequestJpeg(CameraMetadata *request) const { status_t res; res = request->update(ANDROID_JPEG_THUMBNAIL_SIZE, jpegThumbSize, 2); if (res != OK) return res; res = request->update(ANDROID_JPEG_THUMBNAIL_QUALITY, &jpegThumbQuality, 1); if (res != OK) return res; res = request->update(ANDROID_JPEG_QUALITY, &jpegQuality, 1); if (res != OK) return res; res = request->update( ANDROID_JPEG_ORIENTATION, &jpegRotation, 1); if (res != OK) return res; if (gpsEnabled) { res = request->update( ANDROID_JPEG_GPS_COORDINATES, gpsCoordinates, 3); if (res != OK) return res; res = request->update( ANDROID_JPEG_GPS_TIMESTAMP, &gpsTimestamp, 1); if (res != OK) return res; res = request->update( ANDROID_JPEG_GPS_PROCESSING_METHOD, gpsProcessingMethod); if (res != OK) return res; } else { res = request->erase(ANDROID_JPEG_GPS_COORDINATES); if (res != OK) return res; res = request->erase(ANDROID_JPEG_GPS_TIMESTAMP); if (res != OK) return res; res = request->erase(ANDROID_JPEG_GPS_PROCESSING_METHOD); if (res != OK) return res; } return OK; } const char* Parameters::getStateName(State state) { const char* Parameters::getStateName(State state) { #define CASE_ENUM_TO_CHAR(x) case x: return(#x); break; #define CASE_ENUM_TO_CHAR(x) case x: return(#x); break; switch(state) { switch(state) { Loading
services/camera/libcameraservice/camera2/Parameters.h +3 −0 Original line number Original line Diff line number Diff line Loading @@ -216,6 +216,9 @@ struct Parameters { // Update passed-in request for common parameters // Update passed-in request for common parameters status_t updateRequest(CameraMetadata *request) const; status_t updateRequest(CameraMetadata *request) const; // Add/update JPEG entries in metadata status_t updateRequestJpeg(CameraMetadata *request) const; // Calculate the crop region rectangle based on current stream sizes // Calculate the crop region rectangle based on current stream sizes struct CropRegion { struct CropRegion { float left; float left; Loading
services/camera/libcameraservice/camera2/ZslProcessor.cpp +22 −0 Original line number Original line Diff line number Diff line Loading @@ -313,6 +313,20 @@ status_t ZslProcessor::pushToReprocess(int32_t requestId) { return res; return res; } } // Update JPEG settings { SharedParameters::Lock l(client->getParameters()); res = l.mParameters.updateRequestJpeg(&request); if (res != OK) { ALOGE("%s: Camera %d: Unable to update JPEG entries of ZSL " "capture request: %s (%d)", __FUNCTION__, client->getCameraId(), strerror(-res), res); return res; } } mLatestCapturedRequest = request; res = client->getCameraDevice()->capture(request); res = client->getCameraDevice()->capture(request); if (res != OK ) { if (res != OK ) { ALOGE("%s: Unable to send ZSL reprocess request to capture: %s (%d)", ALOGE("%s: Unable to send ZSL reprocess request to capture: %s (%d)", Loading Loading @@ -350,6 +364,14 @@ status_t ZslProcessor::clearZslQueueLocked() { void ZslProcessor::dump(int fd, const Vector<String16>& args) const { void ZslProcessor::dump(int fd, const Vector<String16>& args) const { Mutex::Autolock l(mInputMutex); Mutex::Autolock l(mInputMutex); if (!mLatestCapturedRequest.isEmpty()) { String8 result(" Latest ZSL capture request:\n"); write(fd, result.string(), result.size()); mLatestCapturedRequest.dump(fd, 2, 6); } else { String8 result(" Latest ZSL capture request: none yet\n"); write(fd, result.string(), result.size()); } dumpZslQueue(fd); dumpZslQueue(fd); } } Loading
services/camera/libcameraservice/camera2/ZslProcessor.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -105,6 +105,8 @@ class ZslProcessor: size_t mZslQueueHead; size_t mZslQueueHead; size_t mZslQueueTail; size_t mZslQueueTail; CameraMetadata mLatestCapturedRequest; virtual bool threadLoop(); virtual bool threadLoop(); status_t processNewZslBuffer(sp<Camera2Client> &client); status_t processNewZslBuffer(sp<Camera2Client> &client); Loading