summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2AgentImpl.java10
-rw-r--r--camera2/portability/src/com/android/ex/camera2/portability/AndroidCameraAgentImpl.java12
-rw-r--r--camera2/portability/src/com/android/ex/camera2/portability/CameraActions.java1
-rw-r--r--camera2/portability/src/com/android/ex/camera2/portability/CameraAgent.java10
-rw-r--r--camera2/public/src/com/android/ex/camera2/blocking/BlockingCaptureCallback.java4
-rw-r--r--camera2/utils/src/com/android/ex/camera2/utils/Camera2CaptureCallbackForwarder.java4
-rw-r--r--camera2/utils/src/com/android/ex/camera2/utils/Camera2CaptureCallbackSplitter.java4
-rw-r--r--camera2/utils/tests/src/com/android/ex/camera2/utils/Camera2UtilsTest.java4
8 files changed, 38 insertions, 11 deletions
diff --git a/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2AgentImpl.java b/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2AgentImpl.java
index 88be114..a746634 100644
--- a/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2AgentImpl.java
+++ b/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2AgentImpl.java
@@ -510,12 +510,18 @@ class AndroidCamera2AgentImpl extends CameraAgent {
case CameraActions.SET_DISPLAY_ORIENTATION: {
// Only set the JPEG capture orientation if requested to do so; otherwise,
- // capture in the sensor's physical orientation
+ // capture in the sensor's physical orientation. (e.g., JPEG rotation is
+ // necessary in auto-rotate mode.
mPersistentSettings.set(CaptureRequest.JPEG_ORIENTATION, msg.arg2 > 0 ?
mCameraProxy.getCharacteristics().getJpegOrientation(msg.arg1) : 0);
break;
}
+ case CameraActions.SET_JPEG_ORIENTATION: {
+ mPersistentSettings.set(CaptureRequest.JPEG_ORIENTATION, msg.arg1);
+ break;
+ }
+
case CameraActions.CAPTURE_PHOTO: {
if (mCameraState.getState() <
AndroidCamera2StateHolder.CAMERA_PREVIEW_ACTIVE) {
@@ -1093,7 +1099,7 @@ class AndroidCamera2AgentImpl extends CameraAgent {
new CaptureAvailableListener() {
@Override
public void onCaptureStarted(CameraCaptureSession session, CaptureRequest request,
- long timestamp) {
+ long timestamp, long frameNumber) {
if (shutter != null) {
handler.post(new Runnable() {
@Override
diff --git a/camera2/portability/src/com/android/ex/camera2/portability/AndroidCameraAgentImpl.java b/camera2/portability/src/com/android/ex/camera2/portability/AndroidCameraAgentImpl.java
index 3704f59..1aac446 100644
--- a/camera2/portability/src/com/android/ex/camera2/portability/AndroidCameraAgentImpl.java
+++ b/camera2/portability/src/com/android/ex/camera2/portability/AndroidCameraAgentImpl.java
@@ -489,11 +489,21 @@ class AndroidCameraAgentImpl extends CameraAgent {
mCamera.setDisplayOrientation(
mCharacteristics.getPreviewOrientation(msg.arg1));
// Only set the JPEG capture orientation if requested to do so; otherwise,
- // capture in the sensor's physical orientation
+ // capture in the sensor's physical orientation. (e.g., JPEG rotation is
+ // necessary in auto-rotate mode.
Parameters parameters = mParameterCache.getBlocking();
parameters.setRotation(
msg.arg2 > 0 ? mCharacteristics.getJpegOrientation(msg.arg1) : 0);
mCamera.setParameters(parameters);
+ mParameterCache.invalidate();
+ break;
+ }
+
+ case CameraActions.SET_JPEG_ORIENTATION: {
+ Parameters parameters = mParameterCache.getBlocking();
+ parameters.setRotation(msg.arg1);
+ mCamera.setParameters(parameters);
+ mParameterCache.invalidate();
break;
}
diff --git a/camera2/portability/src/com/android/ex/camera2/portability/CameraActions.java b/camera2/portability/src/com/android/ex/camera2/portability/CameraActions.java
index 03bfc03..407fbb1 100644
--- a/camera2/portability/src/com/android/ex/camera2/portability/CameraActions.java
+++ b/camera2/portability/src/com/android/ex/camera2/portability/CameraActions.java
@@ -51,6 +51,7 @@ class CameraActions {
// Presentation
public static final int ENABLE_SHUTTER_SOUND = 501;
public static final int SET_DISPLAY_ORIENTATION = 502;
+ public static final int SET_JPEG_ORIENTATION = 503;
// Capture
public static final int CAPTURE_PHOTO = 601;
diff --git a/camera2/portability/src/com/android/ex/camera2/portability/CameraAgent.java b/camera2/portability/src/com/android/ex/camera2/portability/CameraAgent.java
index 475523d..17cbc02 100644
--- a/camera2/portability/src/com/android/ex/camera2/portability/CameraAgent.java
+++ b/camera2/portability/src/com/android/ex/camera2/portability/CameraAgent.java
@@ -677,6 +677,16 @@ public abstract class CameraAgent {
}});
}
+ public void setJpegOrientation(final int degrees) {
+ getDispatchThread().runJob(new Runnable() {
+ @Override
+ public void run() {
+ getCameraHandler()
+ .obtainMessage(CameraActions.SET_JPEG_ORIENTATION, degrees, 0)
+ .sendToTarget();
+ }});
+ }
+
/**
* Sets the listener for zoom change.
*
diff --git a/camera2/public/src/com/android/ex/camera2/blocking/BlockingCaptureCallback.java b/camera2/public/src/com/android/ex/camera2/blocking/BlockingCaptureCallback.java
index 4fb2c43..f55437f 100644
--- a/camera2/public/src/com/android/ex/camera2/blocking/BlockingCaptureCallback.java
+++ b/camera2/public/src/com/android/ex/camera2/blocking/BlockingCaptureCallback.java
@@ -123,8 +123,8 @@ public class BlockingCaptureCallback extends CameraCaptureSession.CaptureCallbac
@Override
public void onCaptureStarted(CameraCaptureSession session, CaptureRequest request,
- long timestamp) {
- if (mProxy != null) mProxy.onCaptureStarted(session, request, timestamp);
+ long timestamp, long frameNumber) {
+ if (mProxy != null) mProxy.onCaptureStarted(session, request, timestamp, frameNumber);
mStateChangeListener.onStateChanged(CAPTURE_STARTED);
}
diff --git a/camera2/utils/src/com/android/ex/camera2/utils/Camera2CaptureCallbackForwarder.java b/camera2/utils/src/com/android/ex/camera2/utils/Camera2CaptureCallbackForwarder.java
index 97b5b6e..e6988b5 100644
--- a/camera2/utils/src/com/android/ex/camera2/utils/Camera2CaptureCallbackForwarder.java
+++ b/camera2/utils/src/com/android/ex/camera2/utils/Camera2CaptureCallbackForwarder.java
@@ -89,11 +89,11 @@ public class Camera2CaptureCallbackForwarder extends CaptureCallback {
@Override
public void onCaptureStarted(final CameraCaptureSession session, final CaptureRequest request,
- final long timestamp) {
+ final long timestamp, final long frameNumber) {
mHandler.post(new Runnable() {
@Override
public void run() {
- mListener.onCaptureStarted(session, request, timestamp);
+ mListener.onCaptureStarted(session, request, timestamp, frameNumber);
}});
}
}
diff --git a/camera2/utils/src/com/android/ex/camera2/utils/Camera2CaptureCallbackSplitter.java b/camera2/utils/src/com/android/ex/camera2/utils/Camera2CaptureCallbackSplitter.java
index f813076..86c6070 100644
--- a/camera2/utils/src/com/android/ex/camera2/utils/Camera2CaptureCallbackSplitter.java
+++ b/camera2/utils/src/com/android/ex/camera2/utils/Camera2CaptureCallbackSplitter.java
@@ -87,9 +87,9 @@ public class Camera2CaptureCallbackSplitter extends CaptureCallback {
@Override
public void onCaptureStarted(CameraCaptureSession session, CaptureRequest request,
- long timestamp) {
+ long timestamp, long frameNumber) {
for (CaptureCallback target : mRecipients) {
- target.onCaptureStarted(session, request, timestamp);
+ target.onCaptureStarted(session, request, timestamp, frameNumber);
}
}
}
diff --git a/camera2/utils/tests/src/com/android/ex/camera2/utils/Camera2UtilsTest.java b/camera2/utils/tests/src/com/android/ex/camera2/utils/Camera2UtilsTest.java
index 3156cf7..ea320a7 100644
--- a/camera2/utils/tests/src/com/android/ex/camera2/utils/Camera2UtilsTest.java
+++ b/camera2/utils/tests/src/com/android/ex/camera2/utils/Camera2UtilsTest.java
@@ -55,9 +55,9 @@ public class Camera2UtilsTest extends Camera2DeviceTester {
for (CaptureCallback each : terminals) {
verify(each).onCaptureSequenceCompleted(null, 0, 0L);
}
- splitter.onCaptureStarted(null, null, 0L);
+ splitter.onCaptureStarted(null, null, 0L, 1L);
for (CaptureCallback each : terminals) {
- verify(each).onCaptureStarted(null, null, 0L);
+ verify(each).onCaptureStarted(null, null, 0L, 1L);
}
}