Loading core/java/android/hardware/camera2/impl/CameraAdvancedExtensionSessionImpl.java +59 −23 Original line number Diff line number Diff line Loading @@ -77,18 +77,18 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes private static final String TAG = "CameraAdvancedExtensionSessionImpl"; private final Executor mExecutor; private final CameraDevice mCameraDevice; private CameraDevice mCameraDevice; private final Map<String, CameraMetadataNative> mCharacteristicsMap; private final long mExtensionClientId; private final Handler mHandler; private final HandlerThread mHandlerThread; private final CameraExtensionSession.StateCallback mCallbacks; private final IAdvancedExtenderImpl mAdvancedExtender; private IAdvancedExtenderImpl mAdvancedExtender; // maps registered camera surfaces to extension output configs private final HashMap<Surface, CameraOutputConfig> mCameraConfigMap = new HashMap<>(); // maps camera extension output ids to camera registered image readers private final HashMap<Integer, ImageReader> mReaderMap = new HashMap<>(); private final RequestProcessor mRequestProcessor = new RequestProcessor(); private RequestProcessor mRequestProcessor = new RequestProcessor(); private final int mSessionId; private Surface mClientRepeatingRequestSurface; Loading @@ -100,7 +100,7 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes private final ExtensionSessionStatsAggregator mStatsAggregator; private boolean mInitialized; private boolean mSessionClosed; // Lock to synchronize cross-thread access to device public interface final Object mInterfaceLock; Loading Loading @@ -237,6 +237,7 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes mHandlerThread.start(); mHandler = new Handler(mHandlerThread.getLooper()); mInitialized = false; mSessionClosed = false; mInitializeHandler = new InitializeSessionHandler(); mSessionId = sessionId; mInterfaceLock = cameraDevice.mInterfaceLock; Loading Loading @@ -424,7 +425,7 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes mSessionProcessor.setParameters(request); seqId = mSessionProcessor.startRepeating(new RequestCallbackHandler(request, executor, listener)); executor, listener, mCameraDevice.getId())); } catch (RemoteException e) { throw new CameraAccessException(CameraAccessException.CAMERA_ERROR, "Failed to enable repeating request, extension service failed to respond!"); Loading Loading @@ -452,7 +453,7 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes mSessionProcessor.setParameters(request); seqId = mSessionProcessor.startCapture(new RequestCallbackHandler(request, executor, listener), isPostviewRequested); executor, listener, mCameraDevice.getId()), isPostviewRequested); } catch (RemoteException e) { throw new CameraAccessException(CameraAccessException.CAMERA_ERROR, "Failed " + " to submit capture request, extension service failed to respond!"); Loading @@ -460,8 +461,8 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes } else if ((mClientRepeatingRequestSurface != null) && request.containsTarget(mClientRepeatingRequestSurface)) { try { seqId = mSessionProcessor.startTrigger(request, new RequestCallbackHandler(request, executor, listener)); seqId = mSessionProcessor.startTrigger(request, new RequestCallbackHandler( request, executor, listener, mCameraDevice.getId())); } catch (RemoteException e) { throw new CameraAccessException(CameraAccessException.CAMERA_ERROR, "Failed " + " to submit trigger request, extension service failed to respond!"); Loading Loading @@ -528,6 +529,7 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes mCaptureSession.stopRepeating(); mSessionProcessor.stopRepeating(); mSessionProcessor.onCaptureSessionEnd(); mSessionClosed = true; } catch (RemoteException e) { Log.e(TAG, "Failed to stop the repeating request or end the session," + " , extension service does not respond!") ; Loading Loading @@ -560,6 +562,9 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes if (mSessionProcessor != null) { try { if (!mSessionClosed) { mSessionProcessor.onCaptureSessionEnd(); } mSessionProcessor.deInitSession(); } catch (RemoteException e) { Log.e(TAG, "Failed to de-initialize session processor, extension service" Loading @@ -584,6 +589,10 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes mClientRepeatingRequestSurface = null; mClientCaptureSurface = null; mCaptureSession = null; mRequestProcessor = null; mCameraDevice = null; mAdvancedExtender = null; } if (notifyClose && !skipCloseNotification) { Loading Loading @@ -706,13 +715,16 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes private final CaptureRequest mClientRequest; private final Executor mClientExecutor; private final ExtensionCaptureCallback mClientCallbacks; private final String mCameraId; private RequestCallbackHandler(@NonNull CaptureRequest clientRequest, @NonNull Executor clientExecutor, @NonNull ExtensionCaptureCallback clientCallbacks) { @NonNull ExtensionCaptureCallback clientCallbacks, @NonNull String cameraId) { mClientRequest = clientRequest; mClientExecutor = clientExecutor; mClientCallbacks = clientCallbacks; mCameraId = cameraId; } @Override Loading Loading @@ -784,7 +796,7 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes } result.set(CaptureResult.SENSOR_TIMESTAMP, timestamp); TotalCaptureResult totalResult = new TotalCaptureResult(mCameraDevice.getId(), result, TotalCaptureResult totalResult = new TotalCaptureResult(mCameraId, result, mClientRequest, requestId, timestamp, new ArrayList<>(), mSessionId, new PhysicalCaptureResultInfo[0]); final long ident = Binder.clearCallingIdentity(); Loading Loading @@ -1036,6 +1048,11 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes public int submitBurst(List<Request> requests, IRequestCallback callback) { int seqId = -1; try { synchronized (mInterfaceLock) { if (!mInitialized) { return seqId; } CaptureCallbackHandler captureCallback = new CaptureCallbackHandler(callback); ArrayList<CaptureRequest> captureRequests = new ArrayList<>(); for (Request request : requests) { Loading @@ -1044,6 +1061,7 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes } seqId = mCaptureSession.captureBurstRequests(captureRequests, new CameraExtensionUtils.HandlerExecutor(mHandler), captureCallback); } } catch (CameraAccessException e) { Log.e(TAG, "Failed to submit capture requests!"); } catch (IllegalStateException e) { Loading @@ -1057,11 +1075,17 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes public int setRepeating(Request request, IRequestCallback callback) { int seqId = -1; try { synchronized (mInterfaceLock) { if (!mInitialized) { return seqId; } CaptureRequest repeatingRequest = initializeCaptureRequest(mCameraDevice, request, mCameraConfigMap); CaptureCallbackHandler captureCallback = new CaptureCallbackHandler(callback); seqId = mCaptureSession.setSingleRepeatingRequest(repeatingRequest, new CameraExtensionUtils.HandlerExecutor(mHandler), captureCallback); } } catch (CameraAccessException e) { Log.e(TAG, "Failed to enable repeating request!"); } catch (IllegalStateException e) { Loading @@ -1074,7 +1098,13 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes @Override public void abortCaptures() { try { synchronized (mInterfaceLock) { if (!mInitialized) { return; } mCaptureSession.abortCaptures(); } } catch (CameraAccessException e) { Log.e(TAG, "Failed during capture abort!"); } catch (IllegalStateException e) { Loading @@ -1085,7 +1115,13 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes @Override public void stopRepeating() { try { synchronized (mInterfaceLock) { if (!mInitialized) { return; } mCaptureSession.stopRepeating(); } } catch (CameraAccessException e) { Log.e(TAG, "Failed during repeating capture stop!"); } catch (IllegalStateException e) { Loading Loading
core/java/android/hardware/camera2/impl/CameraAdvancedExtensionSessionImpl.java +59 −23 Original line number Diff line number Diff line Loading @@ -77,18 +77,18 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes private static final String TAG = "CameraAdvancedExtensionSessionImpl"; private final Executor mExecutor; private final CameraDevice mCameraDevice; private CameraDevice mCameraDevice; private final Map<String, CameraMetadataNative> mCharacteristicsMap; private final long mExtensionClientId; private final Handler mHandler; private final HandlerThread mHandlerThread; private final CameraExtensionSession.StateCallback mCallbacks; private final IAdvancedExtenderImpl mAdvancedExtender; private IAdvancedExtenderImpl mAdvancedExtender; // maps registered camera surfaces to extension output configs private final HashMap<Surface, CameraOutputConfig> mCameraConfigMap = new HashMap<>(); // maps camera extension output ids to camera registered image readers private final HashMap<Integer, ImageReader> mReaderMap = new HashMap<>(); private final RequestProcessor mRequestProcessor = new RequestProcessor(); private RequestProcessor mRequestProcessor = new RequestProcessor(); private final int mSessionId; private Surface mClientRepeatingRequestSurface; Loading @@ -100,7 +100,7 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes private final ExtensionSessionStatsAggregator mStatsAggregator; private boolean mInitialized; private boolean mSessionClosed; // Lock to synchronize cross-thread access to device public interface final Object mInterfaceLock; Loading Loading @@ -237,6 +237,7 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes mHandlerThread.start(); mHandler = new Handler(mHandlerThread.getLooper()); mInitialized = false; mSessionClosed = false; mInitializeHandler = new InitializeSessionHandler(); mSessionId = sessionId; mInterfaceLock = cameraDevice.mInterfaceLock; Loading Loading @@ -424,7 +425,7 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes mSessionProcessor.setParameters(request); seqId = mSessionProcessor.startRepeating(new RequestCallbackHandler(request, executor, listener)); executor, listener, mCameraDevice.getId())); } catch (RemoteException e) { throw new CameraAccessException(CameraAccessException.CAMERA_ERROR, "Failed to enable repeating request, extension service failed to respond!"); Loading Loading @@ -452,7 +453,7 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes mSessionProcessor.setParameters(request); seqId = mSessionProcessor.startCapture(new RequestCallbackHandler(request, executor, listener), isPostviewRequested); executor, listener, mCameraDevice.getId()), isPostviewRequested); } catch (RemoteException e) { throw new CameraAccessException(CameraAccessException.CAMERA_ERROR, "Failed " + " to submit capture request, extension service failed to respond!"); Loading @@ -460,8 +461,8 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes } else if ((mClientRepeatingRequestSurface != null) && request.containsTarget(mClientRepeatingRequestSurface)) { try { seqId = mSessionProcessor.startTrigger(request, new RequestCallbackHandler(request, executor, listener)); seqId = mSessionProcessor.startTrigger(request, new RequestCallbackHandler( request, executor, listener, mCameraDevice.getId())); } catch (RemoteException e) { throw new CameraAccessException(CameraAccessException.CAMERA_ERROR, "Failed " + " to submit trigger request, extension service failed to respond!"); Loading Loading @@ -528,6 +529,7 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes mCaptureSession.stopRepeating(); mSessionProcessor.stopRepeating(); mSessionProcessor.onCaptureSessionEnd(); mSessionClosed = true; } catch (RemoteException e) { Log.e(TAG, "Failed to stop the repeating request or end the session," + " , extension service does not respond!") ; Loading Loading @@ -560,6 +562,9 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes if (mSessionProcessor != null) { try { if (!mSessionClosed) { mSessionProcessor.onCaptureSessionEnd(); } mSessionProcessor.deInitSession(); } catch (RemoteException e) { Log.e(TAG, "Failed to de-initialize session processor, extension service" Loading @@ -584,6 +589,10 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes mClientRepeatingRequestSurface = null; mClientCaptureSurface = null; mCaptureSession = null; mRequestProcessor = null; mCameraDevice = null; mAdvancedExtender = null; } if (notifyClose && !skipCloseNotification) { Loading Loading @@ -706,13 +715,16 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes private final CaptureRequest mClientRequest; private final Executor mClientExecutor; private final ExtensionCaptureCallback mClientCallbacks; private final String mCameraId; private RequestCallbackHandler(@NonNull CaptureRequest clientRequest, @NonNull Executor clientExecutor, @NonNull ExtensionCaptureCallback clientCallbacks) { @NonNull ExtensionCaptureCallback clientCallbacks, @NonNull String cameraId) { mClientRequest = clientRequest; mClientExecutor = clientExecutor; mClientCallbacks = clientCallbacks; mCameraId = cameraId; } @Override Loading Loading @@ -784,7 +796,7 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes } result.set(CaptureResult.SENSOR_TIMESTAMP, timestamp); TotalCaptureResult totalResult = new TotalCaptureResult(mCameraDevice.getId(), result, TotalCaptureResult totalResult = new TotalCaptureResult(mCameraId, result, mClientRequest, requestId, timestamp, new ArrayList<>(), mSessionId, new PhysicalCaptureResultInfo[0]); final long ident = Binder.clearCallingIdentity(); Loading Loading @@ -1036,6 +1048,11 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes public int submitBurst(List<Request> requests, IRequestCallback callback) { int seqId = -1; try { synchronized (mInterfaceLock) { if (!mInitialized) { return seqId; } CaptureCallbackHandler captureCallback = new CaptureCallbackHandler(callback); ArrayList<CaptureRequest> captureRequests = new ArrayList<>(); for (Request request : requests) { Loading @@ -1044,6 +1061,7 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes } seqId = mCaptureSession.captureBurstRequests(captureRequests, new CameraExtensionUtils.HandlerExecutor(mHandler), captureCallback); } } catch (CameraAccessException e) { Log.e(TAG, "Failed to submit capture requests!"); } catch (IllegalStateException e) { Loading @@ -1057,11 +1075,17 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes public int setRepeating(Request request, IRequestCallback callback) { int seqId = -1; try { synchronized (mInterfaceLock) { if (!mInitialized) { return seqId; } CaptureRequest repeatingRequest = initializeCaptureRequest(mCameraDevice, request, mCameraConfigMap); CaptureCallbackHandler captureCallback = new CaptureCallbackHandler(callback); seqId = mCaptureSession.setSingleRepeatingRequest(repeatingRequest, new CameraExtensionUtils.HandlerExecutor(mHandler), captureCallback); } } catch (CameraAccessException e) { Log.e(TAG, "Failed to enable repeating request!"); } catch (IllegalStateException e) { Loading @@ -1074,7 +1098,13 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes @Override public void abortCaptures() { try { synchronized (mInterfaceLock) { if (!mInitialized) { return; } mCaptureSession.abortCaptures(); } } catch (CameraAccessException e) { Log.e(TAG, "Failed during capture abort!"); } catch (IllegalStateException e) { Loading @@ -1085,7 +1115,13 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes @Override public void stopRepeating() { try { synchronized (mInterfaceLock) { if (!mInitialized) { return; } mCaptureSession.stopRepeating(); } } catch (CameraAccessException e) { Log.e(TAG, "Failed during repeating capture stop!"); } catch (IllegalStateException e) { Loading