summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 2024-05-10 16:00:17 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-05-10 16:00:17 +0000
commite8af6041a4eddfc90a795ed4cccf693a63aa4b5c (patch)
tree89dacdbc4aeeb817b76e7bd6e6ee57b00415a0d7
parentd95fc06747f85fe158d7bd57e0c63581fb4ee437 (diff)
parent3ff7a5adb026dd8241277c734c822ae9d462258c (diff)
Merge "Camera: Defer physical characteristics map initialization" into 24D1-dev
-rw-r--r--core/java/android/hardware/camera2/CameraManager.java9
-rw-r--r--core/java/android/hardware/camera2/impl/CameraDeviceImpl.java27
2 files changed, 26 insertions, 10 deletions
diff --git a/core/java/android/hardware/camera2/CameraManager.java b/core/java/android/hardware/camera2/CameraManager.java
index d2e4a614202f..c7d886e23487 100644
--- a/core/java/android/hardware/camera2/CameraManager.java
+++ b/core/java/android/hardware/camera2/CameraManager.java
@@ -708,7 +708,10 @@ public final class CameraManager {
return new CameraExtensionCharacteristics(mContext, cameraId, characteristicsMap);
}
- private Map<String, CameraCharacteristics> getPhysicalIdToCharsMap(
+ /**
+ * @hide
+ */
+ public Map<String, CameraCharacteristics> getPhysicalIdToCharsMap(
CameraCharacteristics chars) throws CameraAccessException {
HashMap<String, CameraCharacteristics> physicalIdsToChars =
new HashMap<String, CameraCharacteristics>();
@@ -844,8 +847,6 @@ public final class CameraManager {
final int oomScoreOffset, boolean overrideToPortrait) throws CameraAccessException {
CameraCharacteristics characteristics = getCameraCharacteristics(cameraId);
CameraDevice device = null;
- Map<String, CameraCharacteristics> physicalIdsToChars =
- getPhysicalIdToCharsMap(characteristics);
synchronized (mLock) {
ICameraDeviceUser cameraUser = null;
@@ -861,7 +862,7 @@ public final class CameraManager {
callback,
executor,
characteristics,
- physicalIdsToChars,
+ this,
mContext.getApplicationInfo().targetSdkVersion,
mContext, cameraDeviceSetup);
ICameraDeviceCallbacks callbacks = deviceImpl.getCallbacks();
diff --git a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
index 97c03ed8b0c7..740ebb6d6fbe 100644
--- a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
+++ b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
@@ -31,6 +31,7 @@ import android.hardware.camera2.CameraCaptureSession;
import android.hardware.camera2.CameraCharacteristics;
import android.hardware.camera2.CameraDevice;
import android.hardware.camera2.CameraExtensionCharacteristics;
+import android.hardware.camera2.CameraManager;
import android.hardware.camera2.CameraMetadata;
import android.hardware.camera2.CameraOfflineSession;
import android.hardware.camera2.CaptureFailure;
@@ -146,7 +147,8 @@ public class CameraDeviceImpl extends CameraDevice
private final String mCameraId;
private final CameraCharacteristics mCharacteristics;
- private final Map<String, CameraCharacteristics> mPhysicalIdsToChars;
+ private Map<String, CameraCharacteristics> mPhysicalIdsToChars;
+ private final CameraManager mCameraManager;
private final int mTotalPartialCount;
private final Context mContext;
@@ -292,18 +294,19 @@ public class CameraDeviceImpl extends CameraDevice
public CameraDeviceImpl(String cameraId, StateCallback callback, Executor executor,
CameraCharacteristics characteristics,
- Map<String, CameraCharacteristics> physicalIdsToChars,
+ @NonNull CameraManager manager,
int appTargetSdkVersion,
Context ctx,
@Nullable CameraDevice.CameraDeviceSetup cameraDeviceSetup) {
- if (cameraId == null || callback == null || executor == null || characteristics == null) {
+ if (cameraId == null || callback == null || executor == null || characteristics == null
+ || manager == null) {
throw new IllegalArgumentException("Null argument given");
}
mCameraId = cameraId;
mDeviceCallback = callback;
mDeviceExecutor = executor;
mCharacteristics = characteristics;
- mPhysicalIdsToChars = physicalIdsToChars;
+ mCameraManager = manager;
mAppTargetSdkVersion = appTargetSdkVersion;
mContext = ctx;
mCameraDeviceSetup = cameraDeviceSetup;
@@ -325,6 +328,18 @@ public class CameraDeviceImpl extends CameraDevice
}
}
+ private Map<String, CameraCharacteristics> getPhysicalIdToChars() {
+ if (mPhysicalIdsToChars == null) {
+ try {
+ mPhysicalIdsToChars = mCameraManager.getPhysicalIdToCharsMap(mCharacteristics);
+ } catch (CameraAccessException e) {
+ Log.e(TAG, "Unable to query the physical characteristics map!");
+ }
+ }
+
+ return mPhysicalIdsToChars;
+ }
+
public CameraDeviceCallbacks getCallbacks() {
return mCallbacks;
}
@@ -1544,7 +1559,7 @@ public class CameraDeviceImpl extends CameraDevice
return true;
}
- for (Map.Entry<String, CameraCharacteristics> entry : mPhysicalIdsToChars.entrySet()) {
+ for (Map.Entry<String, CameraCharacteristics> entry : getPhysicalIdToChars().entrySet()) {
configMap = entry.getValue().get(ck);
if (configMap != null &&
@@ -2567,7 +2582,7 @@ public class CameraDeviceImpl extends CameraDevice
public void createExtensionSession(ExtensionSessionConfiguration extensionConfiguration)
throws CameraAccessException {
HashMap<String, CameraCharacteristics> characteristicsMap = new HashMap<>(
- mPhysicalIdsToChars);
+ getPhysicalIdToChars());
characteristicsMap.put(mCameraId, mCharacteristics);
boolean initializationFailed = true;
IBinder token = new Binder(TAG + " : " + mNextSessionId++);