Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e8af6041 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Camera: Defer physical characteristics map initialization" into 24D1-dev

parents d95fc067 3ff7a5ad
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -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();
+21 −6
Original line number Diff line number Diff line
@@ -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++);