summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/com/android/camera/CameraActivity.java3
-rwxr-xr-xsrc/com/android/camera/CaptureModule.java61
2 files changed, 37 insertions, 27 deletions
diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java
index 4f02a697f..958a2cd51 100755
--- a/src/com/android/camera/CameraActivity.java
+++ b/src/com/android/camera/CameraActivity.java
@@ -2003,6 +2003,9 @@ public class CameraActivity extends Activity
message = getString(R.string.spaceIsLow_content);
}
+ if (isFinishing()) {
+ return;
+ }
if (message != null) {
if (mStorageHint == null) {
mStorageHint = OnScreenHint.makeText(this, message);
diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java
index 72ee26287..95460f73b 100755
--- a/src/com/android/camera/CaptureModule.java
+++ b/src/com/android/camera/CaptureModule.java
@@ -1577,7 +1577,12 @@ public class CaptureModule implements CameraModule, PhotoController,
Surface surface = null;
if (!mDeepPortraitMode) {
- waitForPreviewSurfaceReady();
+ try {
+ waitForPreviewSurfaceReady();
+ } catch (RuntimeException e) {
+ Log.v(TAG,
+ "createSession: normal status occur Time out waiting for surface ");
+ }
surface = getPreviewSurfaceForSession(id);
if(id == getMainCameraId()) {
@@ -1615,15 +1620,17 @@ public class CaptureModule implements CameraModule, PhotoController,
}
List<OutputConfiguration> outputConfigurations = null;
- if (mSettingsManager.getSavePictureFormat() == SettingsManager.HEIF_FORMAT ) {
+ if (ApiHelper.isAndroidPOrHigher()) {
outputConfigurations = new ArrayList<OutputConfiguration>();
- if (mInitHeifWriter != null) {
- for (Surface s : list) {
- outputConfigurations.add(new OutputConfiguration(s));
+ for (Surface s : list) {
+ outputConfigurations.add(new OutputConfiguration(s));
+ }
+ if (mSettingsManager.getSavePictureFormat() == SettingsManager.HEIF_FORMAT ) {
+ if (mInitHeifWriter != null) {
+ mHeifOutput = new OutputConfiguration(mInitHeifWriter.getInputSurface());
+ mHeifOutput.enableSurfaceSharing();
+ outputConfigurations.add(mHeifOutput);
}
- mHeifOutput = new OutputConfiguration(mInitHeifWriter.getInputSurface());
- mHeifOutput.enableSurfaceSharing();
- outputConfigurations.add(mHeifOutput);
}
}
if(mChosenImageFormat == ImageFormat.YUV_420_888 || mChosenImageFormat == ImageFormat.PRIVATE) {
@@ -1645,17 +1652,11 @@ public class CaptureModule implements CameraModule, PhotoController,
}
}
} else {
- if (ApiHelper.isAndroidPOrHigher()) {
- createCameraSessionWithSessionConfiguration(id, list, captureSessionCallback,
+ if (ApiHelper.isAndroidPOrHigher() && outputConfigurations != null) {
+ createCameraSessionWithSessionConfiguration(id, outputConfigurations, captureSessionCallback,
mCameraHandler, mPreviewRequestBuilder[id].build());
} else {
- if (mSettingsManager.getSavePictureFormat() == SettingsManager.HEIF_FORMAT &&
- outputConfigurations != null) {
- mCameraDevice[id].createCaptureSessionByOutputConfigurations(outputConfigurations,
- captureSessionCallback, null);
- } else {
- mCameraDevice[id].createCaptureSession(list, captureSessionCallback, null);
- }
+ mCameraDevice[id].createCaptureSession(list, captureSessionCallback, null);
}
}
} else {
@@ -2581,10 +2582,13 @@ public class CaptureModule implements CameraModule, PhotoController,
}
}, mCaptureCallbackHandler);
} catch (CameraAccessException e) {
- Log.d(TAG, "captureVideoSnapshot failed");
+ Log.e(TAG, "captureVideoSnapshot failed: CameraAccessException");
e.printStackTrace();
} catch (IllegalArgumentException e) {
- Log.d(TAG, "captureVideoSnapshot IllegalArgumentException failed");
+ Log.e(TAG, "captureVideoSnapshot failed: IllegalArgumentException");
+ e.printStackTrace();
+ } catch (IllegalStateException e) {
+ Log.e(TAG, "captureVideoSnapshot failed: IllegalStateException");
e.printStackTrace();
}
}
@@ -3141,6 +3145,8 @@ public class CaptureModule implements CameraModule, PhotoController,
builder.set(CaptureRequest.CONTROL_MODE, CaptureRequest.CONTROL_MODE_AUTO);
applyColorEffect(builder);
applyVideoFlash(builder);
+ applyVideoStabilization(builder);
+ applyVideoEIS(builder);
}
private void applyCommonSettings(CaptureRequest.Builder builder, int id) {
@@ -4433,12 +4439,8 @@ public class CaptureModule implements CameraModule, PhotoController,
private void createCameraSessionWithSessionConfiguration(int cameraId,
- List<Surface> outputSurfaces, CameraCaptureSession.StateCallback listener,
+ List<OutputConfiguration> outConfigurations, CameraCaptureSession.StateCallback listener,
Handler handler, CaptureRequest initialRequest) {
- List<OutputConfiguration> outConfigurations = new ArrayList<>(outputSurfaces.size());
- for (Surface surface : outputSurfaces) {
- outConfigurations.add(new OutputConfiguration(surface));
- }
int opMode = SESSION_REGULAR;
String valueFS2 = mSettingsManager.getValue(SettingsManager.KEY_SENSOR_MODE_FS2_VALUE);
if (valueFS2 != null) {
@@ -5079,9 +5081,14 @@ public class CaptureModule implements CameraModule, PhotoController,
Log.v(TAG, "pauseVideoRecording");
mMediaRecorderPausing = true;
mRecordingTotalTime += SystemClock.uptimeMillis() - mRecordingStartTime;
+ String value = mSettingsManager.getValue(SettingsManager.KEY_EIS_VALUE);
+ boolean noNeedEndofStreamWhenPause = value != null && value.equals("V3");
// As EIS is not supported for HFR case (>=120 )
// and FOVC also currently don’t require this for >=120 case
- if (mHighSpeedCapture && ((int)mHighSpeedFPSRange.getUpper() >= HIGH_SESSION_MAX_FPS)) {
+ // so use noNeedEndOfStreamInHFR to control
+ boolean noNeedEndOfStreamInHFR = mHighSpeedCapture &&
+ ((int)mHighSpeedFPSRange.getUpper() >= HIGH_SESSION_MAX_FPS);
+ if (noNeedEndofStreamWhenPause || noNeedEndOfStreamInHFR) {
mMediaRecorder.pause();
} else {
setEndOfStream(false, false);
@@ -5119,7 +5126,7 @@ public class CaptureModule implements CameraModule, PhotoController,
}
} else {
// is pause or stopRecord
- if (!(mMediaRecorderPausing && mStopRecPending) && (mCurrentSession != null)) {
+ if ((mMediaRecorderPausing || mStopRecPending) && (mCurrentSession != null)) {
mCurrentSession.stopRepeating();
try {
mVideoRequestBuilder.set(CaptureModule.recording_end_stream, (byte) 0x01);
@@ -5823,7 +5830,7 @@ public class CaptureModule implements CameraModule, PhotoController,
if (value != null) {
if (value.equals("V2")) {
mStreamConfigOptMode = STREAM_CONFIG_MODE_QTIEIS_REALTIME;
- } else if (value.equals("V3")) {
+ } else if (value.equals("V3") || value.equals("V3SetWhenPause")) {
mStreamConfigOptMode = STREAM_CONFIG_MODE_QTIEIS_LOOKAHEAD;
}
byte byteValue = (byte) (value.equals("disable") ? 0x00 : 0x01);