summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 2023-12-08 08:52:28 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2023-12-08 08:52:28 +0000
commitbfe3e4333330d215f4ff2ac27b10033ab321eaab (patch)
treea59d28ddecda4d300e04c9d6ab49761186685d80
parent19bd703426c6943ffbb4471c955e7cfb9c762a85 (diff)
parent483a178a9f890b24ef259e685f880202e6f7282c (diff)
Merge "Introduce injectSessionParams API in CameraManager" into main
-rw-r--r--core/java/android/hardware/camera2/CameraManager.java49
1 files changed, 48 insertions, 1 deletions
diff --git a/core/java/android/hardware/camera2/CameraManager.java b/core/java/android/hardware/camera2/CameraManager.java
index 002c0b207506..bcce4b65be18 100644
--- a/core/java/android/hardware/camera2/CameraManager.java
+++ b/core/java/android/hardware/camera2/CameraManager.java
@@ -1844,7 +1844,7 @@ public final class CameraManager {
* Remaps Camera Ids in the CameraService.
*
* @hide
- */
+ */
@RequiresPermission(android.Manifest.permission.CAMERA_INJECT_EXTERNAL_CAMERA)
public void remapCameraIds(@NonNull CameraIdRemapping cameraIdRemapping)
throws CameraAccessException, SecurityException, IllegalArgumentException {
@@ -1852,6 +1852,29 @@ public final class CameraManager {
}
/**
+ * Injects session params into existing clients in the CameraService.
+ *
+ * @param cameraId The camera id of client to inject session params into.
+ * If no such client exists for cameraId, no injection will
+ * take place.
+ * @param sessionParams A {@link CaptureRequest} object containing the
+ * the sessionParams to inject into the existing client.
+ *
+ * @throws CameraAccessException {@link CameraAccessException#CAMERA_DISCONNECTED} will be
+ * thrown if camera service is not available. Further, if
+ * if no such client exists for cameraId,
+ * {@link CameraAccessException#CAMERA_ERROR} will be thrown.
+ * @throws SecurityException If the caller does not have permission to inject session
+ * params
+ * @hide
+ */
+ @RequiresPermission(android.Manifest.permission.CAMERA_INJECT_EXTERNAL_CAMERA)
+ public void injectSessionParams(@NonNull String cameraId, @NonNull CaptureRequest sessionParams)
+ throws CameraAccessException, SecurityException {
+ CameraManagerGlobal.get().injectSessionParams(cameraId, sessionParams);
+ }
+
+ /**
* Reports {@link CameraExtensionSessionStats} to the {@link ICameraService} to be logged for
* currently active session. Validation is done downstream.
*
@@ -2110,6 +2133,30 @@ public final class CameraManager {
}
}
+ /** Injects session params into an existing client for cameraid. */
+ public void injectSessionParams(@NonNull String cameraId,
+ @NonNull CaptureRequest sessionParams)
+ throws CameraAccessException, SecurityException {
+ synchronized (mLock) {
+ ICameraService cameraService = getCameraService();
+ if (cameraService == null) {
+ throw new CameraAccessException(
+ CameraAccessException.CAMERA_DISCONNECTED,
+ "Camera service is currently unavailable.");
+ }
+
+ try {
+ cameraService.injectSessionParams(cameraId, sessionParams.getNativeMetadata());
+ } catch (ServiceSpecificException e) {
+ throwAsPublicException(e);
+ } catch (RemoteException e) {
+ throw new CameraAccessException(
+ CameraAccessException.CAMERA_DISCONNECTED,
+ "Camera service is currently unavailable.");
+ }
+ }
+ }
+
private String[] extractCameraIdListLocked() {
String[] cameraIds = null;
int idCount = 0;