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

Commit d2d7a20f authored by Ravneet Dhanjal's avatar Ravneet Dhanjal Committed by Android (Google) Code Review
Browse files

Merge "Camera: Add logic to switch between vendor and fallback extension impl" into main

parents 96e54070 8874fce3
Loading
Loading
Loading
Loading
+260 −104

File changed.

Preview size limit exceeded, changes collapsed.

+10 −5
Original line number Original line Diff line number Diff line
@@ -102,6 +102,8 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes


    private boolean mInitialized;
    private boolean mInitialized;
    private boolean mSessionClosed;
    private boolean mSessionClosed;
    private int mExtensionType;



    private final Context mContext;
    private final Context mContext;


@@ -205,7 +207,7 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes
        CameraAdvancedExtensionSessionImpl ret = new CameraAdvancedExtensionSessionImpl(ctx,
        CameraAdvancedExtensionSessionImpl ret = new CameraAdvancedExtensionSessionImpl(ctx,
                extender, cameraDevice, characteristicsMapNative, repeatingRequestSurface,
                extender, cameraDevice, characteristicsMapNative, repeatingRequestSurface,
                burstCaptureSurface, postviewSurface, config.getStateCallback(),
                burstCaptureSurface, postviewSurface, config.getStateCallback(),
                config.getExecutor(), sessionId, token);
                config.getExecutor(), sessionId, token, config.getExtension());


        ret.mStatsAggregator.setClientName(ctx.getOpPackageName());
        ret.mStatsAggregator.setClientName(ctx.getOpPackageName());
        ret.mStatsAggregator.setExtensionType(config.getExtension());
        ret.mStatsAggregator.setExtensionType(config.getExtension());
@@ -223,7 +225,8 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes
            @Nullable Surface postviewSurface,
            @Nullable Surface postviewSurface,
            @NonNull StateCallback callback, @NonNull Executor executor,
            @NonNull StateCallback callback, @NonNull Executor executor,
            int sessionId,
            int sessionId,
            @NonNull IBinder token) {
            @NonNull IBinder token,
            int extension) {
        mContext = ctx;
        mContext = ctx;
        mAdvancedExtender = extender;
        mAdvancedExtender = extender;
        mCameraDevice = cameraDevice;
        mCameraDevice = cameraDevice;
@@ -242,6 +245,7 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes
        mSessionId = sessionId;
        mSessionId = sessionId;
        mToken = token;
        mToken = token;
        mInterfaceLock = cameraDevice.mInterfaceLock;
        mInterfaceLock = cameraDevice.mInterfaceLock;
        mExtensionType = extension;


        mStatsAggregator = new ExtensionSessionStatsAggregator(mCameraDevice.getId(),
        mStatsAggregator = new ExtensionSessionStatsAggregator(mCameraDevice.getId(),
                /*isAdvanced=*/true);
                /*isAdvanced=*/true);
@@ -583,9 +587,9 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes
            if (mToken != null) {
            if (mToken != null) {
                if (mInitialized || (mCaptureSession != null)) {
                if (mInitialized || (mCaptureSession != null)) {
                    notifyClose = true;
                    notifyClose = true;
                    CameraExtensionCharacteristics.releaseSession();
                    CameraExtensionCharacteristics.releaseSession(mExtensionType);
                }
                }
                CameraExtensionCharacteristics.unregisterClient(mContext, mToken);
                CameraExtensionCharacteristics.unregisterClient(mContext, mToken, mExtensionType);
            }
            }
            mInitialized = false;
            mInitialized = false;
            mToken = null;
            mToken = null;
@@ -654,7 +658,8 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes
            }
            }


            try {
            try {
                CameraExtensionCharacteristics.initializeSession(mInitializeHandler);
                CameraExtensionCharacteristics.initializeSession(
                        mInitializeHandler, mExtensionType);
            } catch (RemoteException e) {
            } catch (RemoteException e) {
                Log.e(TAG, "Failed to initialize session! Extension service does"
                Log.e(TAG, "Failed to initialize session! Extension service does"
                        + " not respond!");
                        + " not respond!");
+7 −3
Original line number Original line Diff line number Diff line
@@ -2559,13 +2559,16 @@ public class CameraDeviceImpl extends CameraDevice
        boolean initializationFailed = true;
        boolean initializationFailed = true;
        IBinder token = new Binder(TAG + " : " + mNextSessionId++);
        IBinder token = new Binder(TAG + " : " + mNextSessionId++);
        try {
        try {
            boolean ret = CameraExtensionCharacteristics.registerClient(mContext, token);
            boolean ret = CameraExtensionCharacteristics.registerClient(mContext, token,
                    extensionConfiguration.getExtension(), mCameraId,
                    CameraExtensionUtils.getCharacteristicsMapNative(characteristicsMap));
            if (!ret) {
            if (!ret) {
                token = null;
                token = null;
                throw new UnsupportedOperationException("Unsupported extension!");
                throw new UnsupportedOperationException("Unsupported extension!");
            }
            }


            if (CameraExtensionCharacteristics.areAdvancedExtensionsSupported()) {
            if (CameraExtensionCharacteristics.areAdvancedExtensionsSupported(
                        extensionConfiguration.getExtension())) {
                mCurrentAdvancedExtensionSession =
                mCurrentAdvancedExtensionSession =
                        CameraAdvancedExtensionSessionImpl.createCameraAdvancedExtensionSession(
                        CameraAdvancedExtensionSessionImpl.createCameraAdvancedExtensionSession(
                                this, characteristicsMap, mContext, extensionConfiguration,
                                this, characteristicsMap, mContext, extensionConfiguration,
@@ -2580,7 +2583,8 @@ public class CameraDeviceImpl extends CameraDevice
            throw new CameraAccessException(CameraAccessException.CAMERA_ERROR);
            throw new CameraAccessException(CameraAccessException.CAMERA_ERROR);
        } finally {
        } finally {
            if (initializationFailed && (token != null)) {
            if (initializationFailed && (token != null)) {
                CameraExtensionCharacteristics.unregisterClient(mContext, token);
                CameraExtensionCharacteristics.unregisterClient(mContext, token,
                        extensionConfiguration.getExtension());
            }
            }
        }
        }
    }
    }
+10 −5
Original line number Original line Diff line number Diff line
@@ -118,6 +118,7 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession {
    // In case the client doesn't explicitly enable repeating requests, the framework
    // In case the client doesn't explicitly enable repeating requests, the framework
    // will do so internally.
    // will do so internally.
    private boolean mInternalRepeatingRequestEnabled = true;
    private boolean mInternalRepeatingRequestEnabled = true;
    private int mExtensionType;


    private final Context mContext;
    private final Context mContext;


@@ -244,7 +245,8 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession {
                sessionId,
                sessionId,
                token,
                token,
                extensionChars.getAvailableCaptureRequestKeys(config.getExtension()),
                extensionChars.getAvailableCaptureRequestKeys(config.getExtension()),
                extensionChars.getAvailableCaptureResultKeys(config.getExtension()));
                extensionChars.getAvailableCaptureResultKeys(config.getExtension()),
                config.getExtension());


        session.mStatsAggregator.setClientName(ctx.getOpPackageName());
        session.mStatsAggregator.setClientName(ctx.getOpPackageName());
        session.mStatsAggregator.setExtensionType(config.getExtension());
        session.mStatsAggregator.setExtensionType(config.getExtension());
@@ -266,7 +268,8 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession {
            int sessionId,
            int sessionId,
            @NonNull IBinder token,
            @NonNull IBinder token,
            @NonNull Set<CaptureRequest.Key> requestKeys,
            @NonNull Set<CaptureRequest.Key> requestKeys,
            @Nullable Set<CaptureResult.Key> resultKeys) {
            @Nullable Set<CaptureResult.Key> resultKeys,
            int extension) {
        mContext = ctx;
        mContext = ctx;
        mImageExtender = imageExtender;
        mImageExtender = imageExtender;
        mPreviewExtender = previewExtender;
        mPreviewExtender = previewExtender;
@@ -289,6 +292,7 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession {
        mSupportedResultKeys = resultKeys;
        mSupportedResultKeys = resultKeys;
        mCaptureResultsSupported = !resultKeys.isEmpty();
        mCaptureResultsSupported = !resultKeys.isEmpty();
        mInterfaceLock = cameraDevice.mInterfaceLock;
        mInterfaceLock = cameraDevice.mInterfaceLock;
        mExtensionType = extension;


        mStatsAggregator = new ExtensionSessionStatsAggregator(mCameraDevice.getId(),
        mStatsAggregator = new ExtensionSessionStatsAggregator(mCameraDevice.getId(),
                /*isAdvanced=*/false);
                /*isAdvanced=*/false);
@@ -881,9 +885,9 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession {
            if (mToken != null) {
            if (mToken != null) {
                if (mInitialized || (mCaptureSession != null)) {
                if (mInitialized || (mCaptureSession != null)) {
                    notifyClose = true;
                    notifyClose = true;
                    CameraExtensionCharacteristics.releaseSession();
                    CameraExtensionCharacteristics.releaseSession(mExtensionType);
                }
                }
                CameraExtensionCharacteristics.unregisterClient(mContext, mToken);
                CameraExtensionCharacteristics.unregisterClient(mContext, mToken, mExtensionType);
            }
            }
            mInitialized = false;
            mInitialized = false;
            mToken = null;
            mToken = null;
@@ -1000,7 +1004,8 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession {
                mStatsAggregator.commit(/*isFinal*/false);
                mStatsAggregator.commit(/*isFinal*/false);
                try {
                try {
                    finishPipelineInitialization();
                    finishPipelineInitialization();
                    CameraExtensionCharacteristics.initializeSession(mInitializeHandler);
                    CameraExtensionCharacteristics.initializeSession(
                            mInitializeHandler, mExtensionType);
                } catch (RemoteException e) {
                } catch (RemoteException e) {
                    Log.e(TAG, "Failed to initialize session! Extension service does"
                    Log.e(TAG, "Failed to initialize session! Extension service does"
                            + " not respond!");
                            + " not respond!");
+1 −0
Original line number Original line Diff line number Diff line
@@ -11833,6 +11833,7 @@ public final class Settings {
         * Whether to enable camera extensions software fallback.
         * Whether to enable camera extensions software fallback.
         * @hide
         * @hide
         */
         */
        @Readable
        public static final String CAMERA_EXTENSIONS_FALLBACK = "camera_extensions_fallback";
        public static final String CAMERA_EXTENSIONS_FALLBACK = "camera_extensions_fallback";
        /**
        /**
Loading