summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/com/android/camera/CaptureModule.java76
-rw-r--r--src/com/android/camera/PhotoModule.java21
-rw-r--r--src/com/android/camera/PhotoUI.java14
-rw-r--r--src/com/android/camera/SettingsManager.java5
-rw-r--r--src/com/android/camera/VideoModule.java12
-rw-r--r--src/com/android/camera/WideAnglePanoramaModule.java12
-rw-r--r--src/com/android/camera/app/CameraApp.java2
-rw-r--r--src/org/codeaurora/snapcam/filter/ClearSightImageProcessor.java10
8 files changed, 99 insertions, 53 deletions
diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java
index ba576306c..ee4bcc724 100644
--- a/src/com/android/camera/CaptureModule.java
+++ b/src/com/android/camera/CaptureModule.java
@@ -162,6 +162,12 @@ public class CaptureModule implements CameraModule, PhotoController,
CaptureRequest.Key<Integer> BayerMonoLinkSessionIdKey =
new CaptureRequest.Key<>("org.codeaurora.qcamera3.dualcam_link_meta_data" +
".related_camera_id", Integer.class);
+ public static CaptureRequest.Key<Byte> JpegCropEnableKey =
+ new CaptureRequest.Key<>("org.codeaurora.qcamera3.jpeg_encode_crop.enable",
+ Byte.class);
+ public static CaptureRequest.Key<int[]> JpegCropRectKey =
+ new CaptureRequest.Key<>("org.codeaurora.qcamera3.jpeg_encode_crop.rect",
+ int[].class);
public static CameraCharacteristics.Key<Byte> MetaDataMonoOnlyKey =
new CameraCharacteristics.Key<>("org.codeaurora.qcamera3.sensor_meta_data.is_mono_only",
Byte.class);
@@ -173,7 +179,6 @@ public class CaptureModule implements CameraModule, PhotoController,
private boolean mAutoExposureRegionSupported;
// The degrees of the device rotated clockwise from its natural orientation.
private int mOrientation = OrientationEventListener.ORIENTATION_UNKNOWN;
- private int mJpegQuality;
private boolean mFirstTimeInitialized;
private boolean mInitialized = false;
private boolean mIsLinked = false;
@@ -1185,46 +1190,50 @@ public class CaptureModule implements CameraModule, PhotoController,
*/
private void closeCamera() {
Log.d(TAG, "closeCamera");
- try {
- mCameraOpenCloseLock.acquire();
- if(mPostProcessor != null) {
- mPostProcessor.onClose();
- }
- if(mFrameProcessor != null) {
- mFrameProcessor.onClose();
- }
- for (int i = 0; i < MAX_NUM_CAM; i++) {
- if (null != mCaptureSession[i]) {
- if (mIsLinked) {
- unLinkBayerMono(i);
- try {
- mCaptureSession[i].capture(mPreviewRequestBuilder[i].build(), null,
- mCameraHandler);
- } catch (CameraAccessException e) {
- e.printStackTrace();
- }
+ if(mPostProcessor != null) {
+ mPostProcessor.onClose();
+ }
+
+ if(mFrameProcessor != null) {
+ mFrameProcessor.onClose();
+ }
+
+ for (int i = 0; i < MAX_NUM_CAM; i++) {
+ if (null != mCaptureSession[i]) {
+ if (mIsLinked) {
+ unLinkBayerMono(i);
+ try {
+ mCaptureSession[i].capture(mPreviewRequestBuilder[i].build(), null,
+ mCameraHandler);
+ } catch (CameraAccessException e) {
+ e.printStackTrace();
}
- mCaptureSession[i].close();
- mCaptureSession[i] = null;
}
+ mCaptureSession[i].close();
+ mCaptureSession[i] = null;
+ }
- if (null != mImageReader[i]) {
- mImageReader[i].close();
- mImageReader[i] = null;
- }
+ if (null != mImageReader[i]) {
+ mImageReader[i].close();
+ mImageReader[i] = null;
+ }
+ }
+ /* no need to set this in the callback and handle asynchronously. This is the same
+ reason as why we release the semaphore here, not in camera close callback function
+ as we don't have to protect the case where camera open() gets called during camera
+ close(). The low level framework/HAL handles the synchronization for open()
+ happens after close() */
+ mIsLinked = false;
+ try {
+ mCameraOpenCloseLock.acquire();
+ for (int i = 0; i < MAX_NUM_CAM; i++) {
if (null != mCameraDevice[i]) {
mCameraDevice[i].close();
mCameraDevice[i] = null;
mCameraOpened[i] = false;
}
}
- /* no need to set this in the callback and handle asynchronously. This is the same
- reason as why we release the semaphore here, not in camera close callback function
- as we don't have to protect the case where camera open() gets called during camera
- close(). The low level framework/HAL handles the synchronization for open()
- happens after close() */
- mIsLinked = false;
} catch (InterruptedException e) {
mCameraOpenCloseLock.release();
throw new RuntimeException("Interrupted while trying to lock camera closing.", e);
@@ -1992,7 +2001,9 @@ public class CaptureModule implements CameraModule, PhotoController,
}
private void applyJpegQuality(CaptureRequest.Builder request) {
- request.set(CaptureRequest.JPEG_QUALITY, (byte) mJpegQuality);
+ String value = mSettingsManager.getValue(SettingsManager.KEY_JPEG_QUALITY);
+ int jpegQuality = getQualityNumber(value);
+ request.set(CaptureRequest.JPEG_QUALITY, (byte) jpegQuality);
}
private void applyAFRegions(CaptureRequest.Builder request, int id) {
@@ -2213,7 +2224,6 @@ public class CaptureModule implements CameraModule, PhotoController,
mActivity.updateStorageSpaceAndHint();
continue;
case SettingsManager.KEY_JPEG_QUALITY:
- mJpegQuality = getQualityNumber(value);
estimateJpegFileSize();
continue;
case SettingsManager.KEY_CAMERA2:
diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java
index d6caf7eb8..6f116ab24 100644
--- a/src/com/android/camera/PhotoModule.java
+++ b/src/com/android/camera/PhotoModule.java
@@ -544,7 +544,10 @@ public class PhotoModule
}
public void reinit() {
- mPreferences = new ComboPreferences(mActivity);
+ mPreferences = ComboPreferences.get(mActivity);
+ if (mPreferences == null) {
+ mPreferences = new ComboPreferences(mActivity);
+ }
CameraSettings.upgradeGlobalPreferences(mPreferences.getGlobal(), mActivity);
mCameraId = getPreferredCameraId(mPreferences);
mPreferences.setLocalId(mActivity, mCameraId);
@@ -555,7 +558,11 @@ public class PhotoModule
public void init(CameraActivity activity, View parent) {
mActivity = activity;
mRootView = parent;
- mPreferences = new ComboPreferences(mActivity);
+ mPreferences = ComboPreferences.get(mActivity);
+ if (mPreferences == null) {
+ mPreferences = new ComboPreferences(mActivity);
+ }
+
CameraSettings.upgradeGlobalPreferences(mPreferences.getGlobal(), activity);
mCameraId = getPreferredCameraId(mPreferences);
@@ -3788,14 +3795,18 @@ public class PhotoModule
if (refocusOn.equals(mSceneMode)) {
try {
mSceneMode = Parameters.SCENE_MODE_AUTO;
- mUI.setPreference(CameraSettings.KEY_ADVANCED_FEATURES, refocusOn);
- mUI.showRefocusDialog();
+ if (mHandler.getLooper() == Looper.myLooper()) {
+ mUI.setPreference(CameraSettings.KEY_ADVANCED_FEATURES, refocusOn);
+ mUI.showRefocusDialog();
+ }
} catch (NullPointerException e) {
}
} else if (optizoomOn.equals(mSceneMode)) {
try {
mSceneMode = Parameters.SCENE_MODE_AUTO;
- mUI.setPreference(CameraSettings.KEY_ADVANCED_FEATURES, optizoomOn);
+ if (mHandler.getLooper() == Looper.myLooper()) {
+ mUI.setPreference(CameraSettings.KEY_ADVANCED_FEATURES, optizoomOn);
+ }
} catch (NullPointerException e) {
}
} else if (mSceneMode == null) {
diff --git a/src/com/android/camera/PhotoUI.java b/src/com/android/camera/PhotoUI.java
index 09e24a710..7c715d9fd 100644
--- a/src/com/android/camera/PhotoUI.java
+++ b/src/com/android/camera/PhotoUI.java
@@ -1445,16 +1445,12 @@ public class PhotoUI implements PieListener,
AlertDialog dialog = new AlertDialog.Builder(mActivity)
.setTitle(R.string.refocus_prompt_title)
.setMessage(R.string.refocus_prompt_message)
- .setPositiveButton(R.string.dialog_ok,
- new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int arg1) {
- SharedPreferences.Editor editor = prefs.edit();
- editor.putInt(CameraSettings.KEY_REFOCUS_PROMPT, 0);
- editor.apply();
- }
- })
+ .setPositiveButton(R.string.dialog_ok, null)
.show();
+ SharedPreferences.Editor editor = prefs.edit();
+ editor.putInt(CameraSettings.KEY_REFOCUS_PROMPT, 0);
+ editor.apply();
+
}
}
diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java
index ff31e9f8b..a5b72488c 100644
--- a/src/com/android/camera/SettingsManager.java
+++ b/src/com/android/camera/SettingsManager.java
@@ -104,7 +104,10 @@ public class SettingsManager implements ListMenu.SettingsListener {
mListeners = new ArrayList<>();
mCharacteristics = new ArrayList<>();
mContext = context;
- mPreferences = new ComboPreferences(mContext);
+ mPreferences = ComboPreferences.get(mContext);
+ if (mPreferences == null) {
+ mPreferences = new ComboPreferences(mContext);
+ }
CameraSettings.upgradeGlobalPreferences(mPreferences.getGlobal(), mContext);
CameraManager manager = (CameraManager) mContext.getSystemService(Context.CAMERA_SERVICE);
diff --git a/src/com/android/camera/VideoModule.java b/src/com/android/camera/VideoModule.java
index 96423044f..9cb48eb0f 100644
--- a/src/com/android/camera/VideoModule.java
+++ b/src/com/android/camera/VideoModule.java
@@ -453,7 +453,11 @@ public class VideoModule implements CameraModule,
}
public void reinit() {
- mPreferences = new ComboPreferences(mActivity);
+ mPreferences = ComboPreferences.get(mActivity);
+ if (mPreferences == null) {
+ mPreferences = new ComboPreferences(mActivity);
+ }
+
CameraSettings.upgradeGlobalPreferences(mPreferences.getGlobal(), mActivity);
mCameraId = getPreferredCameraId(mPreferences);
mPreferences.setLocalId(mActivity, mCameraId);
@@ -464,7 +468,11 @@ public class VideoModule implements CameraModule,
public void init(CameraActivity activity, View root) {
mActivity = activity;
mUI = new VideoUI(activity, this, root);
- mPreferences = new ComboPreferences(mActivity);
+ mPreferences = ComboPreferences.get(mActivity);
+ if (mPreferences == null) {
+ mPreferences = new ComboPreferences(mActivity);
+ }
+
CameraSettings.upgradeGlobalPreferences(mPreferences.getGlobal(), activity);
mCameraId = getPreferredCameraId(mPreferences);
diff --git a/src/com/android/camera/WideAnglePanoramaModule.java b/src/com/android/camera/WideAnglePanoramaModule.java
index 9a0e9ce7e..3f825dd39 100644
--- a/src/com/android/camera/WideAnglePanoramaModule.java
+++ b/src/com/android/camera/WideAnglePanoramaModule.java
@@ -301,7 +301,11 @@ public class WideAnglePanoramaModule
mDialogPanoramaFailedString = appRes.getString(R.string.pano_dialog_panorama_failed);
mDialogWaitingPreviousString = appRes.getString(R.string.pano_dialog_waiting_previous);
- mPreferences = new ComboPreferences(mActivity);
+ mPreferences = ComboPreferences.get(mActivity);
+ if (mPreferences == null) {
+ mPreferences = new ComboPreferences(mActivity);
+ }
+
mPreferences.setLocalId(mActivity, getPreferredCameraId(mPreferences));
CameraSettings.upgradeGlobalPreferences(mPreferences.getGlobal(), activity);
mLocationManager = new LocationManager(mActivity, null);
@@ -960,7 +964,11 @@ public class WideAnglePanoramaModule
@Override
public void onResumeBeforeSuper() {
mPaused = false;
- mPreferences = new ComboPreferences(mActivity);
+ mPreferences = ComboPreferences.get(mActivity);
+ if (mPreferences == null) {
+ mPreferences = new ComboPreferences(mActivity);
+ }
+
CameraSettings.upgradeGlobalPreferences(mPreferences.getGlobal(), mActivity);
mPreferences.setLocalId(mActivity, getPreferredCameraId(mPreferences));
CameraSettings.upgradeLocalPreferences(mPreferences.getLocal());
diff --git a/src/com/android/camera/app/CameraApp.java b/src/com/android/camera/app/CameraApp.java
index 831ed974c..b46d615b0 100644
--- a/src/com/android/camera/app/CameraApp.java
+++ b/src/com/android/camera/app/CameraApp.java
@@ -26,7 +26,7 @@ import com.android.camera.util.UsageStatistics;
public class CameraApp extends Application {
private static long mMaxSystemMemory;
public static boolean mIsLowMemoryDevice = false;
- private static final int LOW_MEMORY_DEVICE_THRESHOLD = 1024*1024*1024;
+ private static final long LOW_MEMORY_DEVICE_THRESHOLD = 2L*1024*1024*1024;
@Override
public void onCreate() {
super.onCreate();
diff --git a/src/org/codeaurora/snapcam/filter/ClearSightImageProcessor.java b/src/org/codeaurora/snapcam/filter/ClearSightImageProcessor.java
index bafbbb8eb..c64a0de2a 100644
--- a/src/org/codeaurora/snapcam/filter/ClearSightImageProcessor.java
+++ b/src/org/codeaurora/snapcam/filter/ClearSightImageProcessor.java
@@ -64,6 +64,7 @@ import android.os.SystemProperties;
import android.util.Log;
import android.view.Surface;
+import com.android.camera.CaptureModule;
import com.android.camera.MediaSaveService;
import com.android.camera.MediaSaveService.OnMediaSavedListener;
import com.android.camera.PhotoModule.NamedImages;
@@ -712,6 +713,15 @@ public class ClearSightImageProcessor {
reprocRequest.set(CaptureRequest.NOISE_REDUCTION_MODE,
CaptureRequest.NOISE_REDUCTION_MODE_OFF);
+ Rect cropRect = image.mImage.getCropRect();
+ if(cropRect != null &&
+ !cropRect.isEmpty()) {
+ // has crop rect. apply to jpeg request
+ reprocRequest.set(CaptureModule.JpegCropEnableKey, (byte)1);
+ reprocRequest.set(CaptureModule.JpegCropRectKey,
+ new int[] {cropRect.left, cropRect.top, cropRect.width(), cropRect.height()});
+ }
+
mImageWriter[camType].queueInputImage(image.mImage);
session.capture(reprocRequest.build(),