Split Camera2Config into Camera2ImlpConfig and Camera2Interop
Moves Camera2Config into the impl package and renames it to
Camera2ImplConfig. This will allow for the Camera2Config name to be
used as a CameraXConfig implementation.
Camera2 interop extensions are moved to a new 'interop' package in a
class called 'Camera2Interop' which is marked experimental.
Bug: 144428928
Test: ./gradlew camera:camera-camera2:connectedCheck
Change-Id: I694af004a5328f8e0efb181f29c24c9844a1dd54
diff --git a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/Camera2ConfigTest.java b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/Camera2InteropTest.java
similarity index 77%
rename from camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/Camera2ConfigTest.java
rename to camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/Camera2InteropTest.java
index a241631..a9d6519 100644
--- a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/Camera2ConfigTest.java
+++ b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/Camera2InteropTest.java
@@ -26,7 +26,9 @@
import androidx.annotation.experimental.UseExperimental;
import androidx.camera.camera2.impl.Camera2CaptureCallbacks;
+import androidx.camera.camera2.impl.Camera2ImplConfig;
import androidx.camera.camera2.impl.CameraEventCallbacks;
+import androidx.camera.camera2.interop.Camera2Interop;
import androidx.camera.core.CameraCaptureSessionStateCallbacks;
import androidx.camera.core.CameraDeviceStateCallbacks;
import androidx.camera.core.Config;
@@ -39,7 +41,7 @@
@SmallTest
@RunWith(AndroidJUnit4.class)
-public final class Camera2ConfigTest {
+public final class Camera2InteropTest {
private static final int INVALID_TEMPLATE_TYPE = -1;
private static final int INVALID_COLOR_CORRECTION_MODE = -1;
private static final CameraCaptureSession.CaptureCallback SESSION_CAPTURE_CALLBACK =
@@ -54,7 +56,7 @@
@Test
public void emptyConfigurationDoesNotContainTemplateType() {
FakeConfig.Builder builder = new FakeConfig.Builder();
- Camera2Config config = new Camera2Config(builder.build());
+ Camera2ImplConfig config = new Camera2ImplConfig(builder.build());
assertThat(config.getCaptureRequestTemplate(INVALID_TEMPLATE_TYPE))
.isEqualTo(INVALID_TEMPLATE_TYPE);
@@ -64,10 +66,10 @@
public void canExtendWithTemplateType() {
FakeConfig.Builder builder = new FakeConfig.Builder();
- new Camera2Config.Extender<>(builder)
+ new Camera2Interop.Extender<>(builder)
.setCaptureRequestTemplate(CameraDevice.TEMPLATE_PREVIEW);
- Camera2Config config = new Camera2Config(builder.build());
+ Camera2ImplConfig config = new Camera2ImplConfig(builder.build());
assertThat(config.getCaptureRequestTemplate(INVALID_TEMPLATE_TYPE))
.isEqualTo(CameraDevice.TEMPLATE_PREVIEW);
@@ -78,11 +80,10 @@
public void canExtendWithSessionCaptureCallback() {
FakeConfig.Builder builder = new FakeConfig.Builder();
- new Camera2Config.Extender<>(builder).setSessionCaptureCallback(SESSION_CAPTURE_CALLBACK);
+ new Camera2Interop.Extender<>(builder).setSessionCaptureCallback(SESSION_CAPTURE_CALLBACK);
+ Camera2ImplConfig config = new Camera2ImplConfig(builder.build());
- Camera2Config config = new Camera2Config(builder.build());
-
- assertThat(config.getSessionCaptureCallbackInternal(/*valueIfMissing=*/ null))
+ assertThat(config.getSessionCaptureCallback(/*valueIfMissing=*/ null))
.isSameInstanceAs(SESSION_CAPTURE_CALLBACK);
}
@@ -90,11 +91,11 @@
public void canExtendWithSessionStateCallback() {
FakeConfig.Builder builder = new FakeConfig.Builder();
- new Camera2Config.Extender<>(builder).setSessionStateCallback(SESSION_STATE_CALLBACK);
+ new Camera2Interop.Extender<>(builder).setSessionStateCallback(SESSION_STATE_CALLBACK);
- Camera2Config config = new Camera2Config(builder.build());
+ Camera2ImplConfig config = new Camera2ImplConfig(builder.build());
- assertThat(config.getSessionStateCallbackInternal(/*valueIfMissing=*/ null))
+ assertThat(config.getSessionStateCallback(/*valueIfMissing=*/ null))
.isSameInstanceAs(SESSION_STATE_CALLBACK);
}
@@ -103,11 +104,11 @@
public void canExtendWithDeviceStateCallback() {
FakeConfig.Builder builder = new FakeConfig.Builder();
- new Camera2Config.Extender<>(builder).setDeviceStateCallback(DEVICE_STATE_CALLBACK);
+ new Camera2Interop.Extender<>(builder).setDeviceStateCallback(DEVICE_STATE_CALLBACK);
- Camera2Config config = new Camera2Config(builder.build());
+ Camera2ImplConfig config = new Camera2ImplConfig(builder.build());
- assertThat(config.getDeviceStateCallbackInternal(/*valueIfMissing=*/ null))
+ assertThat(config.getDeviceStateCallback(/*valueIfMissing=*/ null))
.isSameInstanceAs(DEVICE_STATE_CALLBACK);
}
@@ -115,9 +116,8 @@
public void canExtendWithCameraEventCallback() {
FakeConfig.Builder builder = new FakeConfig.Builder();
- new Camera2Config.Extender<>(builder).setCameraEventCallback(CAMERA_EVENT_CALLBACKS);
-
- Camera2Config config = new Camera2Config(builder.build());
+ new Camera2ImplConfig.Extender<>(builder).setCameraEventCallback(CAMERA_EVENT_CALLBACKS);
+ Camera2ImplConfig config = new Camera2ImplConfig(builder.build());
assertThat(config.getCameraEventCallback(/*valueIfMissing=*/ null))
.isSameInstanceAs(CAMERA_EVENT_CALLBACKS);
@@ -129,21 +129,21 @@
FakeConfig.Builder builder = new FakeConfig.Builder();
Range<Integer> fakeRange = new Range<>(0, 30);
- new Camera2Config.Extender<>(builder)
- .setCaptureRequestOption(CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, fakeRange)
+ new Camera2Interop.Extender<>(builder).setCaptureRequestOption(
+ CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, fakeRange)
.setCaptureRequestOption(
CaptureRequest.COLOR_CORRECTION_MODE,
CameraMetadata.COLOR_CORRECTION_MODE_FAST);
- Camera2Config config = new Camera2Config(builder.build());
+ Camera2ImplConfig config = new Camera2ImplConfig(builder.build());
assertThat(
- config.getCaptureRequestOptionInternal(
+ config.getCaptureRequestOption(
CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE,
/*valueIfMissing=*/ null))
.isSameInstanceAs(fakeRange);
assertThat(
- config.getCaptureRequestOptionInternal(
+ config.getCaptureRequestOption(
CaptureRequest.COLOR_CORRECTION_MODE,
INVALID_COLOR_CORRECTION_MODE))
.isEqualTo(CameraMetadata.COLOR_CORRECTION_MODE_FAST);
@@ -155,7 +155,7 @@
FakeConfig.Builder builder = new FakeConfig.Builder();
Range<Integer> fakeRange = new Range<>(0, 30);
- new Camera2Config.Extender<>(builder)
+ new Camera2Interop.Extender<>(builder)
.setCaptureRequestOption(CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, fakeRange)
.setCaptureRequestOption(
CaptureRequest.COLOR_CORRECTION_MODE,
@@ -163,7 +163,7 @@
// Insert one non capture request option to ensure it gets filtered out
.setCaptureRequestTemplate(CameraDevice.TEMPLATE_PREVIEW);
- Camera2Config config = new Camera2Config(builder.build());
+ Camera2ImplConfig config = new Camera2ImplConfig(builder.build());
config.findOptions(
"camera2.captureRequest.option",
@@ -185,23 +185,23 @@
@Test
public void canSetAndRetrieveCaptureRequestKeys_byBuilder() {
Range<Integer> fakeRange = new Range<>(0, 30);
- Camera2Config.Builder builder =
- new Camera2Config.Builder()
+ Camera2ImplConfig.Builder builder =
+ new Camera2ImplConfig.Builder()
.setCaptureRequestOption(
CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, fakeRange)
.setCaptureRequestOption(
CaptureRequest.COLOR_CORRECTION_MODE,
CameraMetadata.COLOR_CORRECTION_MODE_FAST);
- Camera2Config config = new Camera2Config(builder.build());
+ Camera2ImplConfig config = new Camera2ImplConfig(builder.build());
assertThat(
- config.getCaptureRequestOptionInternal(
+ config.getCaptureRequestOption(
CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE,
/*valueIfMissing=*/ null))
.isSameInstanceAs(fakeRange);
assertThat(
- config.getCaptureRequestOptionInternal(
+ config.getCaptureRequestOption(
CaptureRequest.COLOR_CORRECTION_MODE,
INVALID_COLOR_CORRECTION_MODE))
.isEqualTo(CameraMetadata.COLOR_CORRECTION_MODE_FAST);
@@ -210,18 +210,18 @@
@Test
public void canInsertAllOptions_byBuilder() {
Range<Integer> fakeRange = new Range<>(0, 30);
- Camera2Config.Builder builder =
- new Camera2Config.Builder()
+ Camera2ImplConfig.Builder builder =
+ new Camera2ImplConfig.Builder()
.setCaptureRequestOption(
CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, fakeRange)
.setCaptureRequestOption(
CaptureRequest.COLOR_CORRECTION_MODE,
CameraMetadata.COLOR_CORRECTION_MODE_FAST);
- Camera2Config config1 = new Camera2Config(builder.build());
+ Camera2ImplConfig config1 = new Camera2ImplConfig(builder.build());
- Camera2Config.Builder builder2 =
- new Camera2Config.Builder()
+ Camera2ImplConfig.Builder builder2 =
+ new Camera2ImplConfig.Builder()
.setCaptureRequestOption(
CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON)
.setCaptureRequestOption(
@@ -229,23 +229,23 @@
CaptureRequest.CONTROL_AWB_MODE_AUTO)
.insertAllOptions(config1);
- Camera2Config config2 = new Camera2Config(builder2.build());
+ Camera2ImplConfig config2 = new Camera2ImplConfig(builder2.build());
assertThat(
- config2.getCaptureRequestOptionInternal(
+ config2.getCaptureRequestOption(
CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE,
/*valueIfMissing=*/ null))
.isSameInstanceAs(fakeRange);
assertThat(
- config2.getCaptureRequestOptionInternal(
+ config2.getCaptureRequestOption(
CaptureRequest.COLOR_CORRECTION_MODE,
INVALID_COLOR_CORRECTION_MODE))
.isEqualTo(CameraMetadata.COLOR_CORRECTION_MODE_FAST);
assertThat(
- config2.getCaptureRequestOptionInternal(
+ config2.getCaptureRequestOption(
CaptureRequest.CONTROL_AE_MODE, /*valueIfMissing=*/ 0))
.isEqualTo(CaptureRequest.CONTROL_AE_MODE_ON);
- assertThat(config2.getCaptureRequestOptionInternal(
+ assertThat(config2.getCaptureRequestOption(
CaptureRequest.CONTROL_AWB_MODE, 0))
.isEqualTo(CaptureRequest.CONTROL_AWB_MODE_AUTO);
}
diff --git a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/ImageCaptureTest.java b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/ImageCaptureTest.java
index 012ef47..6ad7b84 100644
--- a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/ImageCaptureTest.java
+++ b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/ImageCaptureTest.java
@@ -47,6 +47,7 @@
import androidx.annotation.Nullable;
import androidx.annotation.experimental.UseExperimental;
import androidx.camera.camera2.impl.util.FakeRepeatingUseCase;
+import androidx.camera.camera2.interop.Camera2Interop;
import androidx.camera.core.AppConfig;
import androidx.camera.core.CameraControlInternal;
import androidx.camera.core.CameraFactory;
@@ -439,7 +440,7 @@
ImageCapture.Builder builder = new ImageCapture.Builder();
CameraCaptureSession.CaptureCallback captureCallback =
mock(CameraCaptureSession.CaptureCallback.class);
- new Camera2Config.Extender<>(builder).setSessionCaptureCallback(captureCallback);
+ new Camera2Interop.Extender<>(builder).setSessionCaptureCallback(captureCallback);
ImageCapture useCase = builder.build();
mInstrumentation.runOnMainSync(
() -> {
diff --git a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/impl/Camera2CameraControlTest.java b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/impl/Camera2CameraControlTest.java
index cf0ddfd..8095413 100644
--- a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/impl/Camera2CameraControlTest.java
+++ b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/impl/Camera2CameraControlTest.java
@@ -51,7 +51,6 @@
import android.os.HandlerThread;
import androidx.annotation.NonNull;
-import androidx.camera.camera2.Camera2Config;
import androidx.camera.core.CameraControl;
import androidx.camera.core.CameraControlInternal;
import androidx.camera.core.CameraInfoUnavailableException;
@@ -146,22 +145,25 @@
verify(mControlUpdateCallback, times(1)).onCameraControlUpdateSessionConfig(
mSessionConfigArgumentCaptor.capture());
SessionConfig sessionConfig = mSessionConfigArgumentCaptor.getValue();
- Camera2Config repeatingConfig = new Camera2Config(sessionConfig.getImplementationOptions());
- assertThat(repeatingConfig.getCaptureRequestOptionInternal(
+ Camera2ImplConfig repeatingConfig = new Camera2ImplConfig(
+ sessionConfig.getImplementationOptions());
+ assertThat(repeatingConfig.getCaptureRequestOption(
CaptureRequest.SCALER_CROP_REGION, null))
.isEqualTo(rect);
- Camera2Config singleConfig = new Camera2Config(mCamera2CameraControl.getSessionOptions());
- assertThat(singleConfig.getCaptureRequestOptionInternal(
+ Camera2ImplConfig singleConfig = new Camera2ImplConfig(
+ mCamera2CameraControl.getSessionOptions());
+ assertThat(singleConfig.getCaptureRequestOption(
CaptureRequest.SCALER_CROP_REGION, null))
.isEqualTo(rect);
}
@Test
public void defaultAFAWBMode_ShouldBeCAFWhenNotFocusLocked() {
- Camera2Config singleConfig = new Camera2Config(mCamera2CameraControl.getSessionOptions());
+ Camera2ImplConfig singleConfig = new Camera2ImplConfig(
+ mCamera2CameraControl.getSessionOptions());
assertThat(
- singleConfig.getCaptureRequestOptionInternal(
+ singleConfig.getCaptureRequestOption(
CaptureRequest.CONTROL_MODE, CaptureRequest.CONTROL_MODE_OFF))
.isEqualTo(CaptureRequest.CONTROL_MODE_AUTO);
@@ -178,7 +180,8 @@
verify(mControlUpdateCallback, times(1)).onCameraControlUpdateSessionConfig(
mSessionConfigArgumentCaptor.capture());
SessionConfig sessionConfig = mSessionConfigArgumentCaptor.getValue();
- Camera2Config camera2Config = new Camera2Config(sessionConfig.getImplementationOptions());
+ Camera2ImplConfig camera2Config = new Camera2ImplConfig(
+ sessionConfig.getImplementationOptions());
assertAeMode(camera2Config, CONTROL_AE_MODE_ON_AUTO_FLASH);
assertThat(mCamera2CameraControl.getFlashMode()).isEqualTo(FlashMode.AUTO);
@@ -193,7 +196,8 @@
verify(mControlUpdateCallback, times(1)).onCameraControlUpdateSessionConfig(
mSessionConfigArgumentCaptor.capture());
SessionConfig sessionConfig = mSessionConfigArgumentCaptor.getValue();
- Camera2Config camera2Config = new Camera2Config(sessionConfig.getImplementationOptions());
+ Camera2ImplConfig camera2Config = new Camera2ImplConfig(
+ sessionConfig.getImplementationOptions());
assertAeMode(camera2Config, CONTROL_AE_MODE_ON);
@@ -209,7 +213,8 @@
verify(mControlUpdateCallback, times(1)).onCameraControlUpdateSessionConfig(
mSessionConfigArgumentCaptor.capture());
SessionConfig sessionConfig = mSessionConfigArgumentCaptor.getValue();
- Camera2Config camera2Config = new Camera2Config(sessionConfig.getImplementationOptions());
+ Camera2ImplConfig camera2Config = new Camera2ImplConfig(
+ sessionConfig.getImplementationOptions());
assertAeMode(camera2Config, CONTROL_AE_MODE_ON_ALWAYS_FLASH);
@@ -225,12 +230,13 @@
verify(mControlUpdateCallback, times(1)).onCameraControlUpdateSessionConfig(
mSessionConfigArgumentCaptor.capture());
SessionConfig sessionConfig = mSessionConfigArgumentCaptor.getValue();
- Camera2Config camera2Config = new Camera2Config(sessionConfig.getImplementationOptions());
+ Camera2ImplConfig camera2Config = new Camera2ImplConfig(
+ sessionConfig.getImplementationOptions());
assertAeMode(camera2Config, CONTROL_AE_MODE_ON);
assertThat(
- camera2Config.getCaptureRequestOptionInternal(
+ camera2Config.getCaptureRequestOption(
CaptureRequest.FLASH_MODE, FLASH_MODE_OFF))
.isEqualTo(FLASH_MODE_TORCH);
assertThat(mCamera2CameraControl.isTorchOn()).isTrue();
@@ -246,11 +252,12 @@
verify(mControlUpdateCallback, times(2)).onCameraControlUpdateSessionConfig(
mSessionConfigArgumentCaptor.capture());
SessionConfig sessionConfig = mSessionConfigArgumentCaptor.getAllValues().get(0);
- Camera2Config camera2Config = new Camera2Config(sessionConfig.getImplementationOptions());
+ Camera2ImplConfig camera2Config = new Camera2ImplConfig(
+ sessionConfig.getImplementationOptions());
assertAeMode(camera2Config, CONTROL_AE_MODE_ON_AUTO_FLASH);
- assertThat(camera2Config.getCaptureRequestOptionInternal(
+ assertThat(camera2Config.getCaptureRequestOption(
CaptureRequest.FLASH_MODE, -1))
.isEqualTo(-1);
assertThat(mCamera2CameraControl.isTorchOn()).isFalse();
@@ -258,8 +265,8 @@
verify(mControlUpdateCallback, times(1)).onCameraControlCaptureRequests(
mCaptureConfigArgumentCaptor.capture());
CaptureConfig captureConfig = mCaptureConfigArgumentCaptor.getValue().get(0);
- Camera2Config resultCaptureConfig =
- new Camera2Config(captureConfig.getImplementationOptions());
+ Camera2ImplConfig resultCaptureConfig =
+ new Camera2ImplConfig(captureConfig.getImplementationOptions());
assertAeMode(resultCaptureConfig, CONTROL_AE_MODE_ON);
@@ -274,10 +281,10 @@
verify(mControlUpdateCallback).onCameraControlCaptureRequests(
mCaptureConfigArgumentCaptor.capture());
CaptureConfig captureConfig = mCaptureConfigArgumentCaptor.getValue().get(0);
- Camera2Config resultCaptureConfig =
- new Camera2Config(captureConfig.getImplementationOptions());
+ Camera2ImplConfig resultCaptureConfig =
+ new Camera2ImplConfig(captureConfig.getImplementationOptions());
assertThat(
- resultCaptureConfig.getCaptureRequestOptionInternal(
+ resultCaptureConfig.getCaptureRequestOption(
CaptureRequest.CONTROL_AF_TRIGGER, null))
.isEqualTo(CaptureRequest.CONTROL_AF_TRIGGER_START);
}
@@ -291,10 +298,10 @@
verify(mControlUpdateCallback).onCameraControlCaptureRequests(
mCaptureConfigArgumentCaptor.capture());
CaptureConfig captureConfig = mCaptureConfigArgumentCaptor.getValue().get(0);
- Camera2Config resultCaptureConfig =
- new Camera2Config(captureConfig.getImplementationOptions());
+ Camera2ImplConfig resultCaptureConfig =
+ new Camera2ImplConfig(captureConfig.getImplementationOptions());
assertThat(
- resultCaptureConfig.getCaptureRequestOptionInternal(
+ resultCaptureConfig.getCaptureRequestOption(
CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER, null))
.isEqualTo(CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER_START);
}
@@ -308,16 +315,16 @@
verify(mControlUpdateCallback).onCameraControlCaptureRequests(
mCaptureConfigArgumentCaptor.capture());
CaptureConfig captureConfig = mCaptureConfigArgumentCaptor.getValue().get(0);
- Camera2Config resultCaptureConfig =
- new Camera2Config(captureConfig.getImplementationOptions());
+ Camera2ImplConfig resultCaptureConfig =
+ new Camera2ImplConfig(captureConfig.getImplementationOptions());
assertThat(
- resultCaptureConfig.getCaptureRequestOptionInternal(
+ resultCaptureConfig.getCaptureRequestOption(
CaptureRequest.CONTROL_AF_TRIGGER, null))
.isEqualTo(CaptureRequest.CONTROL_AF_TRIGGER_CANCEL);
if (Build.VERSION.SDK_INT >= 23) {
assertThat(
- resultCaptureConfig.getCaptureRequestOptionInternal(
+ resultCaptureConfig.getCaptureRequestOption(
CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER, null))
.isEqualTo(CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER_CANCEL);
}
@@ -332,14 +339,14 @@
verify(mControlUpdateCallback).onCameraControlCaptureRequests(
mCaptureConfigArgumentCaptor.capture());
CaptureConfig captureConfig = mCaptureConfigArgumentCaptor.getValue().get(0);
- Camera2Config resultCaptureConfig =
- new Camera2Config(captureConfig.getImplementationOptions());
+ Camera2ImplConfig resultCaptureConfig =
+ new Camera2ImplConfig(captureConfig.getImplementationOptions());
assertThat(
- resultCaptureConfig.getCaptureRequestOptionInternal(
+ resultCaptureConfig.getCaptureRequestOption(
CaptureRequest.CONTROL_AF_TRIGGER, null))
.isEqualTo(CaptureRequest.CONTROL_AF_TRIGGER_CANCEL);
assertThat(
- resultCaptureConfig.getCaptureRequestOptionInternal(
+ resultCaptureConfig.getCaptureRequestOption(
CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER, null))
.isNull();
}
@@ -353,17 +360,17 @@
verify(mControlUpdateCallback).onCameraControlCaptureRequests(
mCaptureConfigArgumentCaptor.capture());
CaptureConfig captureConfig = mCaptureConfigArgumentCaptor.getValue().get(0);
- Camera2Config resultCaptureConfig =
- new Camera2Config(captureConfig.getImplementationOptions());
+ Camera2ImplConfig resultCaptureConfig =
+ new Camera2ImplConfig(captureConfig.getImplementationOptions());
assertThat(
- resultCaptureConfig.getCaptureRequestOptionInternal(
+ resultCaptureConfig.getCaptureRequestOption(
CaptureRequest.CONTROL_AF_TRIGGER, null))
.isNull();
if (Build.VERSION.SDK_INT >= 23) {
assertThat(
- resultCaptureConfig.getCaptureRequestOptionInternal(
+ resultCaptureConfig.getCaptureRequestOption(
CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER, null))
.isEqualTo(CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER_CANCEL);
}
@@ -383,30 +390,32 @@
verify(mControlUpdateCallback, times(1)).onCameraControlUpdateSessionConfig(
mSessionConfigArgumentCaptor.capture());
SessionConfig sessionConfig = mSessionConfigArgumentCaptor.getValue();
- Camera2Config repeatingConfig = new Camera2Config(sessionConfig.getImplementationOptions());
+ Camera2ImplConfig repeatingConfig = new Camera2ImplConfig(
+ sessionConfig.getImplementationOptions());
// Here we verify only 3A region count is correct. Values correctness are left to
// FocusMeteringControlTest.
assertThat(
- repeatingConfig.getCaptureRequestOptionInternal(
+ repeatingConfig.getCaptureRequestOption(
CaptureRequest.CONTROL_AF_REGIONS, null)).hasLength(1);
assertThat(
- repeatingConfig.getCaptureRequestOptionInternal(
+ repeatingConfig.getCaptureRequestOption(
CaptureRequest.CONTROL_AE_REGIONS, null)).hasLength(1);
assertThat(
- repeatingConfig.getCaptureRequestOptionInternal(
+ repeatingConfig.getCaptureRequestOption(
CaptureRequest.CONTROL_AWB_REGIONS, null)).hasLength(1);
- Camera2Config singleConfig = new Camera2Config(mCamera2CameraControl.getSessionOptions());
+ Camera2ImplConfig singleConfig = new Camera2ImplConfig(
+ mCamera2CameraControl.getSessionOptions());
assertThat(
- singleConfig.getCaptureRequestOptionInternal(
+ singleConfig.getCaptureRequestOption(
CaptureRequest.CONTROL_AF_REGIONS, null)).hasLength(1);
assertThat(
- singleConfig.getCaptureRequestOptionInternal(
+ singleConfig.getCaptureRequestOption(
CaptureRequest.CONTROL_AE_REGIONS, null)).hasLength(1);
assertThat(
- singleConfig.getCaptureRequestOptionInternal(
+ singleConfig.getCaptureRequestOption(
CaptureRequest.CONTROL_AWB_REGIONS, null)).hasLength(1);
}
@@ -425,11 +434,11 @@
mCaptureConfigArgumentCaptor.capture());
CaptureConfig captureConfig = mCaptureConfigArgumentCaptor.getValue().get(0);
- Camera2Config resultCaptureConfig =
- new Camera2Config(captureConfig.getImplementationOptions());
+ Camera2ImplConfig resultCaptureConfig =
+ new Camera2ImplConfig(captureConfig.getImplementationOptions());
// Trigger AF
- assertThat(resultCaptureConfig.getCaptureRequestOptionInternal(
+ assertThat(resultCaptureConfig.getCaptureRequestOption(
CaptureRequest.CONTROL_AF_TRIGGER, null))
.isEqualTo(CaptureRequest.CONTROL_AF_TRIGGER_START);
}
@@ -465,28 +474,30 @@
verify(mControlUpdateCallback, times(1)).onCameraControlUpdateSessionConfig(
mSessionConfigArgumentCaptor.capture());
SessionConfig sessionConfig = mSessionConfigArgumentCaptor.getValue();
- Camera2Config repeatingConfig = new Camera2Config(sessionConfig.getImplementationOptions());
+ Camera2ImplConfig repeatingConfig = new Camera2ImplConfig(
+ sessionConfig.getImplementationOptions());
assertThat(
- repeatingConfig.getCaptureRequestOptionInternal(
+ repeatingConfig.getCaptureRequestOption(
CaptureRequest.CONTROL_AF_REGIONS, null)).isNull();
assertThat(
- repeatingConfig.getCaptureRequestOptionInternal(
+ repeatingConfig.getCaptureRequestOption(
CaptureRequest.CONTROL_AE_REGIONS, null)).isNull();
assertThat(
- repeatingConfig.getCaptureRequestOptionInternal(
+ repeatingConfig.getCaptureRequestOption(
CaptureRequest.CONTROL_AWB_REGIONS, null)).isNull();
- Camera2Config singleConfig = new Camera2Config(mCamera2CameraControl.getSessionOptions());
+ Camera2ImplConfig singleConfig = new Camera2ImplConfig(
+ mCamera2CameraControl.getSessionOptions());
assertThat(
- singleConfig.getCaptureRequestOptionInternal(
+ singleConfig.getCaptureRequestOption(
CaptureRequest.CONTROL_AF_REGIONS, null)).isNull();
assertThat(
- singleConfig.getCaptureRequestOptionInternal(
+ singleConfig.getCaptureRequestOption(
CaptureRequest.CONTROL_AE_REGIONS, null)).isNull();
assertThat(
- singleConfig.getCaptureRequestOptionInternal(
+ singleConfig.getCaptureRequestOption(
CaptureRequest.CONTROL_AWB_REGIONS, null)).isNull();
}
@@ -508,11 +519,11 @@
mCaptureConfigArgumentCaptor.capture());
CaptureConfig captureConfig = mCaptureConfigArgumentCaptor.getValue().get(0);
- Camera2Config resultCaptureConfig =
- new Camera2Config(captureConfig.getImplementationOptions());
+ Camera2ImplConfig resultCaptureConfig =
+ new Camera2ImplConfig(captureConfig.getImplementationOptions());
// Trigger AF
- assertThat(resultCaptureConfig.getCaptureRequestOptionInternal(
+ assertThat(resultCaptureConfig.getCaptureRequestOption(
CaptureRequest.CONTROL_AF_TRIGGER, null))
.isEqualTo(CaptureRequest.CONTROL_AF_TRIGGER_CANCEL);
}
@@ -521,7 +532,8 @@
verify(mControlUpdateCallback, times(1)).onCameraControlUpdateSessionConfig(
mSessionConfigArgumentCaptor.capture());
SessionConfig sessionConfig = mSessionConfigArgumentCaptor.getValue();
- Camera2Config repeatingConfig = new Camera2Config(sessionConfig.getImplementationOptions());
+ Camera2ImplConfig repeatingConfig = new Camera2ImplConfig(
+ sessionConfig.getImplementationOptions());
assertAfMode(repeatingConfig, expectAfMode);
}
@@ -552,13 +564,15 @@
mCamera2CameraControl.startFocusAndMetering(action);
HandlerUtil.waitForLooperToIdle(mHandler);
- Camera2Config singleConfig = new Camera2Config(mCamera2CameraControl.getSessionOptions());
+ Camera2ImplConfig singleConfig = new Camera2ImplConfig(
+ mCamera2CameraControl.getSessionOptions());
assertAfMode(singleConfig, CaptureRequest.CONTROL_AF_MODE_AUTO);
mCamera2CameraControl.cancelFocusAndMetering();
HandlerUtil.waitForLooperToIdle(mHandler);
- Camera2Config singleConfig2 = new Camera2Config(mCamera2CameraControl.getSessionOptions());
+ Camera2ImplConfig singleConfig2 = new Camera2ImplConfig(
+ mCamera2CameraControl.getSessionOptions());
assertAfMode(singleConfig2, CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE);
}
@@ -590,9 +604,9 @@
return false;
}
- private void assertAfMode(Camera2Config config, int afMode) {
+ private void assertAfMode(Camera2ImplConfig config, int afMode) {
if (isAfModeSupported(afMode)) {
- assertThat(config.getCaptureRequestOptionInternal(
+ assertThat(config.getCaptureRequestOption(
CaptureRequest.CONTROL_AF_MODE, null)).isEqualTo(afMode);
} else {
int fallbackMode;
@@ -604,14 +618,14 @@
fallbackMode = CONTROL_AF_MODE_OFF;
}
- assertThat(config.getCaptureRequestOptionInternal(
+ assertThat(config.getCaptureRequestOption(
CaptureRequest.CONTROL_AF_MODE, null)).isEqualTo(fallbackMode);
}
}
- private void assertAeMode(Camera2Config config, int aeMode) {
+ private void assertAeMode(Camera2ImplConfig config, int aeMode) {
if (isAeModeSupported(aeMode)) {
- assertThat(config.getCaptureRequestOptionInternal(
+ assertThat(config.getCaptureRequestOption(
CaptureRequest.CONTROL_AE_MODE, null)).isEqualTo(aeMode);
} else {
int fallbackMode;
@@ -621,14 +635,14 @@
fallbackMode = CONTROL_AE_MODE_OFF;
}
- assertThat(config.getCaptureRequestOptionInternal(
+ assertThat(config.getCaptureRequestOption(
CaptureRequest.CONTROL_AE_MODE, null)).isEqualTo(fallbackMode);
}
}
- private void assertAwbMode(Camera2Config config, int awbMode) {
+ private void assertAwbMode(Camera2ImplConfig config, int awbMode) {
if (isAwbModeSupported(awbMode)) {
- assertThat(config.getCaptureRequestOptionInternal(
+ assertThat(config.getCaptureRequestOption(
CaptureRequest.CONTROL_AWB_MODE, null)).isEqualTo(awbMode);
} else {
int fallbackMode;
@@ -638,7 +652,7 @@
fallbackMode = CONTROL_AWB_MODE_OFF;
}
- assertThat(config.getCaptureRequestOptionInternal(
+ assertThat(config.getCaptureRequestOption(
CaptureRequest.CONTROL_AWB_MODE, null)).isEqualTo(fallbackMode);
}
}
@@ -680,10 +694,11 @@
verify(controlUpdateCallback, times(1)).onCameraControlUpdateSessionConfig(
mSessionConfigArgumentCaptor.capture());
SessionConfig sessionConfig = mSessionConfigArgumentCaptor.getValue();
- Camera2Config camera2Config = new Camera2Config(sessionConfig.getImplementationOptions());
+ Camera2ImplConfig camera2Config = new Camera2ImplConfig(
+ sessionConfig.getImplementationOptions());
reset(controlUpdateCallback);
- return camera2Config.getCaptureRequestOptionInternal(
+ return camera2Config.getCaptureRequestOption(
CaptureRequest.SCALER_CROP_REGION, null);
}
diff --git a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/impl/Camera2ImplCameraRepositoryTest.java b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/impl/Camera2ImplCameraRepositoryTest.java
index d93756c..18878b0 100644
--- a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/impl/Camera2ImplCameraRepositoryTest.java
+++ b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/impl/Camera2ImplCameraRepositoryTest.java
@@ -26,10 +26,10 @@
import androidx.annotation.NonNull;
import androidx.annotation.experimental.UseExperimental;
-import androidx.camera.camera2.Camera2Config;
import androidx.camera.camera2.ExperimentalCamera2Interop;
import androidx.camera.camera2.impl.util.SemaphoreReleasingCamera2Callbacks.DeviceStateCallback;
import androidx.camera.camera2.impl.util.SemaphoreReleasingCamera2Callbacks.SessionStateCallback;
+import androidx.camera.camera2.interop.Camera2Interop;
import androidx.camera.core.CameraFactory;
import androidx.camera.core.CameraRepository;
import androidx.camera.core.ImmediateSurface;
@@ -114,7 +114,7 @@
mUseCaseGroup = new UseCaseGroup();
FakeUseCaseConfig.Builder configBuilder = new FakeUseCaseConfig.Builder();
- new Camera2Config.Extender<>(configBuilder).setDeviceStateCallback(mDeviceStateCallback);
+ new Camera2Interop.Extender<>(configBuilder).setDeviceStateCallback(mDeviceStateCallback);
mConfig = configBuilder.getUseCaseConfig();
mCameraId = getCameraIdForLensFacingUnchecked(LensFacing.BACK);
mUseCase = new CallbackAttachingFakeUseCase(mConfig, mCameraId);
diff --git a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/impl/Camera2ImplCameraXTest.java b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/impl/Camera2ImplCameraXTest.java
index a091144..e71d15e 100644
--- a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/impl/Camera2ImplCameraXTest.java
+++ b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/impl/Camera2ImplCameraXTest.java
@@ -36,10 +36,10 @@
import androidx.annotation.NonNull;
import androidx.annotation.experimental.UseExperimental;
import androidx.camera.camera2.Camera2AppConfig;
-import androidx.camera.camera2.Camera2Config;
import androidx.camera.camera2.ExperimentalCamera2Interop;
import androidx.camera.camera2.impl.util.SemaphoreReleasingCamera2Callbacks.DeviceStateCallback;
import androidx.camera.camera2.impl.util.SemaphoreReleasingCamera2Callbacks.SessionCaptureCallback;
+import androidx.camera.camera2.interop.Camera2Interop;
import androidx.camera.core.Camera;
import androidx.camera.core.CameraControl;
import androidx.camera.core.CameraInfo;
@@ -145,7 +145,7 @@
@Override
public void run() {
ImageAnalysis.Builder builder = new ImageAnalysis.Builder();
- new Camera2Config.Extender<>(builder).setDeviceStateCallback(mDeviceStateCallback);
+ new Camera2Interop.Extender<>(builder).setDeviceStateCallback(mDeviceStateCallback);
ImageAnalysis useCase = builder.build();
CameraX.bindToLifecycle(mLifecycle, DEFAULT_SELECTOR, useCase);
@@ -178,7 +178,7 @@
@Override
public void run() {
ImageAnalysis.Builder builder = new ImageAnalysis.Builder();
- new Camera2Config.Extender<>(builder).setDeviceStateCallback(mDeviceStateCallback);
+ new Camera2Interop.Extender<>(builder).setDeviceStateCallback(mDeviceStateCallback);
ImageAnalysis useCase = builder.build();
ImageAnalysis useCase2 = new ImageAnalysis.Builder().build();
@@ -211,7 +211,7 @@
@Override
public void run() {
ImageAnalysis.Builder configBuilder = new ImageAnalysis.Builder();
- new Camera2Config.Extender<>(configBuilder)
+ new Camera2Interop.Extender<>(configBuilder)
.setDeviceStateCallback(deviceStateCallback)
.setSessionCaptureCallback(sessionCaptureCallback);
ImageAnalysis useCase = configBuilder.build();
@@ -250,7 +250,7 @@
@Test
public void bind_opensCamera() {
ImageAnalysis.Builder builder = new ImageAnalysis.Builder();
- new Camera2Config.Extender<>(builder).setDeviceStateCallback(mDeviceStateCallback);
+ new Camera2Interop.Extender<>(builder).setDeviceStateCallback(mDeviceStateCallback);
ImageAnalysis useCase = builder.build();
mInstrumentation.runOnMainSync(new Runnable() {
@@ -268,7 +268,7 @@
@Test
public void bind_opensCamera_withOutAnalyzer() {
ImageAnalysis.Builder builder = new ImageAnalysis.Builder();
- new Camera2Config.Extender<>(builder).setDeviceStateCallback(mDeviceStateCallback);
+ new Camera2Interop.Extender<>(builder).setDeviceStateCallback(mDeviceStateCallback);
ImageAnalysis useCase = builder.build();
mInstrumentation.runOnMainSync(new Runnable() {
@@ -288,7 +288,7 @@
CameraCaptureSession.StateCallback.class);
ImageAnalysis.Builder builder = new ImageAnalysis.Builder();
- new Camera2Config.Extender<>(builder).setDeviceStateCallback(mDeviceStateCallback)
+ new Camera2Interop.Extender<>(builder).setDeviceStateCallback(mDeviceStateCallback)
.setSessionStateCallback(mockSessionStateCallback);
ImageAnalysis useCase = builder.build();
@@ -315,7 +315,7 @@
for (int i = 0; i < 2; i++) {
CameraDevice.StateCallback callback = mock(CameraDevice.StateCallback.class);
- new Camera2Config.Extender<>(builder).setDeviceStateCallback(callback);
+ new Camera2Interop.Extender<>(builder).setDeviceStateCallback(callback);
ImageAnalysis useCase = builder.build();
mInstrumentation.runOnMainSync(new Runnable() {
@@ -345,7 +345,7 @@
for (int i = 0; i < 2; i++) {
CameraDevice.StateCallback callback = mock(CameraDevice.StateCallback.class);
- new Camera2Config.Extender<>(builder).setDeviceStateCallback(callback);
+ new Camera2Interop.Extender<>(builder).setDeviceStateCallback(callback);
ImageAnalysis useCase = builder.build();
mInstrumentation.runOnMainSync(new Runnable() {
@@ -372,7 +372,7 @@
@Test
public void unbindAll_closesAllCameras() {
ImageAnalysis.Builder builder = new ImageAnalysis.Builder();
- new Camera2Config.Extender<>(builder).setDeviceStateCallback(mDeviceStateCallback);
+ new Camera2Interop.Extender<>(builder).setDeviceStateCallback(mDeviceStateCallback);
ImageAnalysis useCase = builder.build();
mInstrumentation.runOnMainSync(new Runnable() {
@@ -398,7 +398,7 @@
@Test
public void unbindAllAssociatedUseCase_closesCamera() {
ImageAnalysis.Builder builder = new ImageAnalysis.Builder();
- new Camera2Config.Extender<>(builder).setDeviceStateCallback(mDeviceStateCallback);
+ new Camera2Interop.Extender<>(builder).setDeviceStateCallback(mDeviceStateCallback);
ImageAnalysis useCase = builder.build();
mInstrumentation.runOnMainSync(new Runnable() {
@@ -424,7 +424,7 @@
@Test
public void unbindPartialAssociatedUseCase_doesNotCloseCamera() throws InterruptedException {
ImageAnalysis.Builder builder = new ImageAnalysis.Builder();
- new Camera2Config.Extender<>(builder).setDeviceStateCallback(mDeviceStateCallback);
+ new Camera2Interop.Extender<>(builder).setDeviceStateCallback(mDeviceStateCallback);
ImageAnalysis useCase0 = builder.build();
ImageCapture useCase1 = new ImageCapture.Builder()
@@ -456,7 +456,7 @@
@Test
public void unbindAllAssociatedUseCaseInParts_ClosesCamera() {
ImageAnalysis.Builder builder = new ImageAnalysis.Builder();
- new Camera2Config.Extender<>(builder).setDeviceStateCallback(mDeviceStateCallback);
+ new Camera2Interop.Extender<>(builder).setDeviceStateCallback(mDeviceStateCallback);
ImageAnalysis useCase0 = builder.build();
ImageCapture useCase1 = new ImageCapture.Builder()
diff --git a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/impl/CaptureSessionTest.java b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/impl/CaptureSessionTest.java
index 692da7b..f185053 100644
--- a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/impl/CaptureSessionTest.java
+++ b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/impl/CaptureSessionTest.java
@@ -43,7 +43,6 @@
import android.view.Surface;
import androidx.annotation.NonNull;
-import androidx.camera.camera2.Camera2Config;
import androidx.camera.camera2.impl.CaptureSession.State;
import androidx.camera.core.CameraCaptureCallback;
import androidx.camera.core.CameraCaptureCallbacks;
@@ -611,8 +610,8 @@
private static <T> CaptureConfig getCaptureConfig(CaptureRequest.Key<T> key, T effectValue,
CameraCaptureCallback callback) {
CaptureConfig.Builder captureConfigBuilder = new CaptureConfig.Builder();
- Camera2Config.Builder camera2ConfigurationBuilder =
- new Camera2Config.Builder();
+ Camera2ImplConfig.Builder camera2ConfigurationBuilder =
+ new Camera2ImplConfig.Builder();
camera2ConfigurationBuilder.setCaptureRequestOption(key, effectValue);
captureConfigBuilder.addImplementationOptions(camera2ConfigurationBuilder.build());
captureConfigBuilder.addCameraCaptureCallback(callback);
@@ -703,12 +702,13 @@
builder.addRepeatingCameraCaptureCallback(mSessionCameraCaptureCallback);
MutableOptionsBundle testCallbackConfig = MutableOptionsBundle.create();
- testCallbackConfig.insertOption(Camera2Config.CAMERA_EVENT_CALLBACK_OPTION,
+ testCallbackConfig.insertOption(Camera2ImplConfig.CAMERA_EVENT_CALLBACK_OPTION,
new CameraEventCallbacks(mTestCameraEventCallback));
builder.addImplementationOptions(testCallbackConfig);
MutableOptionsBundle mockCameraEventCallbackConfig = MutableOptionsBundle.create();
- mockCameraEventCallbackConfig.insertOption(Camera2Config.CAMERA_EVENT_CALLBACK_OPTION,
+ mockCameraEventCallbackConfig.insertOption(
+ Camera2ImplConfig.CAMERA_EVENT_CALLBACK_OPTION,
new CameraEventCallbacks(mMockCameraEventCallback));
builder.addImplementationOptions(mockCameraEventCallbackConfig);
@@ -723,7 +723,7 @@
// P3 | SessionConfig | AF_MODE_AUTO | FLASH_MODE_SINGLE | AE_MODE_ON
// ==================================================================================
- Camera2Config.Builder camera2ConfigBuilder = new Camera2Config.Builder();
+ Camera2ImplConfig.Builder camera2ConfigBuilder = new Camera2ImplConfig.Builder();
// Add capture request options for CameraEventCallbacks
CameraEventCallback cameraEventCallback = new CameraEventCallback() {
@@ -731,7 +731,7 @@
public CaptureConfig onRepeating() {
CaptureConfig.Builder builder = new CaptureConfig.Builder();
builder.addImplementationOptions(
- new Camera2Config.Builder()
+ new Camera2ImplConfig.Builder()
.setCaptureRequestOption(
CaptureRequest.CONTROL_AF_MODE,
CaptureRequest.CONTROL_AF_MODE_MACRO)
@@ -742,7 +742,7 @@
return builder.build();
}
};
- new Camera2Config.Extender<>(camera2ConfigBuilder)
+ new Camera2ImplConfig.Extender<>(camera2ConfigBuilder)
.setCameraEventCallback(
new CameraEventCallbacks(cameraEventCallback));
@@ -765,7 +765,7 @@
captureConfigBuilder.addCameraCaptureCallback(mComboCameraCaptureCallback);
// Add capture request options for CaptureConfig
- captureConfigBuilder.addImplementationOptions(new Camera2Config.Builder()
+ captureConfigBuilder.addImplementationOptions(new Camera2ImplConfig.Builder()
.setCaptureRequestOption(
CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_OFF)
.build());
diff --git a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/impl/ZoomControlDeviceTest.java b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/impl/ZoomControlDeviceTest.java
index 4a6e9bf..9ef7a28 100644
--- a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/impl/ZoomControlDeviceTest.java
+++ b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/impl/ZoomControlDeviceTest.java
@@ -37,7 +37,6 @@
import androidx.annotation.NonNull;
import androidx.camera.camera2.Camera2AppConfig;
-import androidx.camera.camera2.Camera2Config;
import androidx.camera.core.AppConfig;
import androidx.camera.core.CameraControlInternal.ControlUpdateCallback;
import androidx.camera.core.CameraInfoUnavailableException;
@@ -220,10 +219,11 @@
verify(controlUpdateCallback, times(1)).onCameraControlUpdateSessionConfig(
sessionConfigArgumentCaptor.capture());
SessionConfig sessionConfig = sessionConfigArgumentCaptor.getValue();
- Camera2Config camera2Config = new Camera2Config(sessionConfig.getImplementationOptions());
+ Camera2ImplConfig camera2Config = new Camera2ImplConfig(
+ sessionConfig.getImplementationOptions());
reset(controlUpdateCallback);
- return camera2Config.getCaptureRequestOptionInternal(
+ return camera2Config.getCaptureRequestOption(
CaptureRequest.SCALER_CROP_REGION, null);
}
@@ -489,7 +489,7 @@
mZoomControl.setActive(false);
assertThat(mZoomControl.getZoomRatio().getValue()).isEqualTo(
- mZoomControl.DEFAULT_ZOOM_RATIO);
+ ZoomControl.DEFAULT_ZOOM_RATIO);
assertThat(mZoomControl.getLinearZoom().getValue()).isEqualTo(0);
}
}
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/Camera2Config.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/Camera2Config.java
deleted file mode 100644
index e8d93c8d..0000000
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/Camera2Config.java
+++ /dev/null
@@ -1,509 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package androidx.camera.camera2;
-
-import android.hardware.camera2.CameraCaptureSession;
-import android.hardware.camera2.CameraCaptureSession.CaptureCallback;
-import android.hardware.camera2.CameraDevice;
-import android.hardware.camera2.CameraDevice.StateCallback;
-import android.hardware.camera2.CaptureRequest;
-import android.hardware.camera2.CaptureResult;
-import android.view.Surface;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.annotation.RestrictTo;
-import androidx.annotation.RestrictTo.Scope;
-import androidx.camera.camera2.impl.CameraEventCallbacks;
-import androidx.camera.core.Config;
-import androidx.camera.core.ExtendableBuilder;
-import androidx.camera.core.MutableConfig;
-import androidx.camera.core.MutableOptionsBundle;
-import androidx.camera.core.OptionsBundle;
-
-import java.util.HashSet;
-import java.util.Set;
-
-/** Configuration options related to the {@link android.hardware.camera2} APIs. */
-public final class Camera2Config implements Config {
-
- /** @hide */
- @RestrictTo(Scope.LIBRARY)
- public static final String CAPTURE_REQUEST_ID_STEM = "camera2.captureRequest.option.";
-
- // Option Declarations:
- // *********************************************************************************************
-
- static final Option<Integer> TEMPLATE_TYPE_OPTION =
- Option.create("camera2.captureRequest.templateType", int.class);
- static final Option<StateCallback> DEVICE_STATE_CALLBACK_OPTION =
- Option.create("camera2.cameraDevice.stateCallback", StateCallback.class);
- static final Option<CameraCaptureSession.StateCallback> SESSION_STATE_CALLBACK_OPTION =
- Option.create(
- "camera2.cameraCaptureSession.stateCallback",
- CameraCaptureSession.StateCallback.class);
- static final Option<CaptureCallback> SESSION_CAPTURE_CALLBACK_OPTION =
- Option.create("camera2.cameraCaptureSession.captureCallback", CaptureCallback.class);
-
- /** @hide */
- @RestrictTo(Scope.LIBRARY)
- public static final Option<CameraEventCallbacks> CAMERA_EVENT_CALLBACK_OPTION =
- Option.create("camera2.cameraEvent.callback", CameraEventCallbacks.class);
- // *********************************************************************************************
-
- private final Config mConfig;
-
- /**
- * Creates a Camera2Config for reading Camera2 options from the given config.
- *
- * @param config The config that potentially contains Camera2 options.
- */
- public Camera2Config(@NonNull Config config) {
- mConfig = config;
- }
-
- // Unfortunately, we can't get the Class<T> from the CaptureRequest.Key, so we're forced to
- // erase the type. This shouldn't be a problem as long as we are only using these options
- // within the Camera2Config and Camera2Config.Builder classes.
- static Option<Object> createCaptureRequestOption(CaptureRequest.Key<?> key) {
- return Option.create(CAPTURE_REQUEST_ID_STEM + key.getName(), Object.class, key);
- }
-
- /**
- * Returns a value for the given {@link CaptureRequest.Key}.
- *
- * @param key The key to retrieve.
- * @param valueIfMissing The value to return if this configuration option has not been set.
- * @param <ValueT> The type of the value.
- * @return The stored value or <code>valueIfMissing</code> if the value does not exist in this
- * configuration.
- * @hide
- */
- @RestrictTo(Scope.LIBRARY_GROUP)
- @Nullable
- public <ValueT> ValueT getCaptureRequestOptionInternal(
- @NonNull CaptureRequest.Key<ValueT> key, @Nullable ValueT valueIfMissing) {
- @SuppressWarnings(
- "unchecked") // Type should have been only set via Builder#setCaptureRequestOption()
- Option<ValueT> opt = (Option<ValueT>) Camera2Config.createCaptureRequestOption(key);
- return mConfig.retrieveOption(opt, valueIfMissing);
- }
-
- /**
- * Returns a value for the given {@link CaptureRequest.Key}.
- *
- * @param key The key to retrieve.
- * @param valueIfMissing The value to return if this configuration option has not been set.
- * @param <ValueT> The type of the value.
- * @return The stored value or <code>valueIfMissing</code> if the value does not exist in this
- * configuration.
- */
- @ExperimentalCamera2Interop
- @Nullable
- public <ValueT> ValueT getCaptureRequestOption(
- @NonNull CaptureRequest.Key<ValueT> key, @Nullable ValueT valueIfMissing) {
- return getCaptureRequestOptionInternal(key, valueIfMissing);
- }
-
-
- /**
- * Returns all capture request options contained in this configuration.
- *
- * @hide
- */
- @RestrictTo(Scope.LIBRARY)
- @NonNull
- public Set<Option<?>> getCaptureRequestOptions() {
- final Set<Option<?>> optionSet = new HashSet<>();
- findOptions(
- Camera2Config.CAPTURE_REQUEST_ID_STEM,
- new OptionMatcher() {
- @Override
- public boolean onOptionMatched(Option<?> option) {
- optionSet.add(option);
- return true;
- }
- });
- return optionSet;
- }
-
- /**
- * Returns the CameraDevice template from the given configuration.
- *
- * <p>See {@link CameraDevice} for valid template types. For example, {@link
- * CameraDevice#TEMPLATE_PREVIEW}.
- *
- * @param valueIfMissing The value to return if this configuration option has not been set.
- * @return The stored value or <code>valueIfMissing</code> if the value does not exist in this
- * configuration.
- * @hide
- */
- @RestrictTo(Scope.LIBRARY)
- public int getCaptureRequestTemplate(int valueIfMissing) {
- return mConfig.retrieveOption(TEMPLATE_TYPE_OPTION, valueIfMissing);
- }
-
- /**
- * Returns the stored {@link CameraDevice.StateCallback}.
- *
- * @param valueIfMissing The value to return if this configuration option has not been set.
- * @return The stored value or <code>valueIfMissing</code> if the value does not exist in this
- * configuration.
- * @hide
- */
- @RestrictTo(Scope.LIBRARY_GROUP)
- @Nullable
- public CameraDevice.StateCallback getDeviceStateCallbackInternal(
- @Nullable CameraDevice.StateCallback valueIfMissing) {
- return mConfig.retrieveOption(DEVICE_STATE_CALLBACK_OPTION, valueIfMissing);
- }
-
- /**
- * Returns the stored {@link CameraDevice.StateCallback}.
- *
- * @param valueIfMissing The value to return if this configuration option has not been set.
- * @return The stored value or <code>valueIfMissing</code> if the value does not exist in this
- * configuration.
- */
- @ExperimentalCamera2Interop
- @Nullable
- public CameraDevice.StateCallback getDeviceStateCallback(
- @Nullable CameraDevice.StateCallback valueIfMissing) {
- return getDeviceStateCallbackInternal(valueIfMissing);
- }
-
-
- /**
- * Returns the stored {@link CameraCaptureSession.StateCallback}.
- *
- * @param valueIfMissing The value to return if this configuration option has not been set.
- * @return The stored value or <code>valueIfMissing</code> if the value does not exist in this
- * configuration.
- * @hide
- */
- @RestrictTo(Scope.LIBRARY_GROUP)
- @Nullable
- public CameraCaptureSession.StateCallback getSessionStateCallbackInternal(
- @Nullable CameraCaptureSession.StateCallback valueIfMissing) {
- return mConfig.retrieveOption(SESSION_STATE_CALLBACK_OPTION, valueIfMissing);
- }
-
- /**
- * Returns the stored {@link CameraCaptureSession.StateCallback}.
- *
- * @param valueIfMissing The value to return if this configuration option has not been set.
- * @return The stored value or <code>valueIfMissing</code> if the value does not exist in this
- * configuration.
- */
- @ExperimentalCamera2Interop
- @Nullable
- public CameraCaptureSession.StateCallback getSessionStateCallback(
- @Nullable CameraCaptureSession.StateCallback valueIfMissing) {
- return getSessionStateCallbackInternal(valueIfMissing);
- }
-
- /**
- * Returns the stored {@link CameraCaptureSession.CaptureCallback}.
- *
- * @param valueIfMissing The value to return if this configuration option has not been set.
- * @return The stored value or <code>valueIfMissing</code> if the value does not exist in this
- * configuration.
- * @hide
- */
- @RestrictTo(Scope.LIBRARY_GROUP)
- @Nullable
- public CameraCaptureSession.CaptureCallback getSessionCaptureCallbackInternal(
- @Nullable CameraCaptureSession.CaptureCallback valueIfMissing) {
- return mConfig.retrieveOption(SESSION_CAPTURE_CALLBACK_OPTION, valueIfMissing);
- }
-
- /**
- * Returns the stored {@link CameraCaptureSession.CaptureCallback}.
- *
- * @param valueIfMissing The value to return if this configuration option has not been set.
- * @return The stored value or <code>valueIfMissing</code> if the value does not exist in this
- * configuration.
- */
- @ExperimentalCamera2Interop
- @Nullable
- public CameraCaptureSession.CaptureCallback getSessionCaptureCallback(
- @Nullable CameraCaptureSession.CaptureCallback valueIfMissing) {
- return getSessionCaptureCallbackInternal(valueIfMissing);
- }
-
- /**
- * Returns the stored CameraEventCallbacks instance.
- *
- * @param valueIfMissing The value to return if this configuration option has not been set.
- * @return The stored value or <code>valueIfMissing</code> if the value does not exist in this
- * configuration.
- * @hide
- */
- @RestrictTo(Scope.LIBRARY_GROUP)
- @Nullable
- public CameraEventCallbacks getCameraEventCallback(
- @Nullable CameraEventCallbacks valueIfMissing) {
- return mConfig.retrieveOption(CAMERA_EVENT_CALLBACK_OPTION, valueIfMissing);
- }
-
- // Start of the default implementation of Config
- // *********************************************************************************************
-
- // Implementations of Config default methods
-
- /** @hide */
- @RestrictTo(Scope.LIBRARY_GROUP)
- @Override
- public boolean containsOption(@NonNull Option<?> id) {
- return mConfig.containsOption(id);
- }
-
- /** @hide */
- @RestrictTo(Scope.LIBRARY_GROUP)
- @Override
- @Nullable
- public <ValueT> ValueT retrieveOption(@NonNull Option<ValueT> id) {
- return mConfig.retrieveOption(id);
- }
-
- /** @hide */
- @RestrictTo(Scope.LIBRARY_GROUP)
- @Override
- @Nullable
- public <ValueT> ValueT retrieveOption(@NonNull Option<ValueT> id,
- @Nullable ValueT valueIfMissing) {
- return mConfig.retrieveOption(id, valueIfMissing);
- }
-
- /** @hide */
- @RestrictTo(Scope.LIBRARY_GROUP)
- @Override
- public void findOptions(@NonNull String idStem, @NonNull OptionMatcher matcher) {
- mConfig.findOptions(idStem, matcher);
- }
-
- /** @hide */
- @RestrictTo(Scope.LIBRARY_GROUP)
- @Override
- @NonNull
- public Set<Option<?>> listOptions() {
- return mConfig.listOptions();
- }
-
- // End of the default implementation of Config
- // *********************************************************************************************
-
- /**
- * Extends a {@link ExtendableBuilder} to add Camera2 options.
- *
- * @param <T> the type being built by the extendable builder.
- */
- public static final class Extender<T> {
-
- ExtendableBuilder<T> mBaseBuilder;
-
- /**
- * Creates an Extender that can be used to add Camera2 options to another Builder.
- *
- * @param baseBuilder The builder being extended.
- */
- public Extender(@NonNull ExtendableBuilder<T> baseBuilder) {
- mBaseBuilder = baseBuilder;
- }
-
- /**
- * Sets a {@link CaptureRequest.Key} and Value on the configuration.
- *
- * @param key The {@link CaptureRequest.Key} which will be set.
- * @param value The value for the key.
- * @param <ValueT> The type of the value.
- * @return The current Extender.
- */
- @NonNull
- @ExperimentalCamera2Interop
- public <ValueT> Extender<T> setCaptureRequestOption(
- @NonNull CaptureRequest.Key<ValueT> key, @NonNull ValueT value) {
- // Reify the type so we can obtain the class
- Option<Object> opt = Camera2Config.createCaptureRequestOption(key);
- mBaseBuilder.getMutableConfig().insertOption(opt, value);
- return this;
- }
-
- /**
- * Sets a CameraDevice template on the given configuration.
- *
- * <p>See {@link CameraDevice} for valid template types. For example, {@link
- * CameraDevice#TEMPLATE_PREVIEW}.
- *
- * @param templateType The template type to set.
- * @return The current Extender.
- * @hide
- */
- @RestrictTo(Scope.LIBRARY)
- @NonNull
- public Extender<T> setCaptureRequestTemplate(int templateType) {
- mBaseBuilder.getMutableConfig().insertOption(TEMPLATE_TYPE_OPTION, templateType);
- return this;
- }
-
- /**
- * Sets a {@link CameraDevice.StateCallback}.
- *
- * <p>The caller is expected to use the {@link CameraDevice} instance accessed through the
- * callback methods responsibly. Generally safe usages include: (1) querying the device for
- * its id, (2) using the callbacks to determine what state the device is currently in.
- * Generally unsafe usages include: (1) creating a new {@link CameraCaptureSession}, (2)
- * creating a new {@link CaptureRequest}, (3) closing the device. When the caller uses the
- * device beyond the safe usage limits, the usage may still work in conjunction with
- * CameraX, but any strong guarantees provided by CameraX about the validity of the camera
- * state become void.
- *
- * @param stateCallback The {@link CameraDevice.StateCallback}.
- * @return The current Extender.
- */
- @NonNull
- @ExperimentalCamera2Interop
- public Extender<T> setDeviceStateCallback(
- @NonNull CameraDevice.StateCallback stateCallback) {
- mBaseBuilder.getMutableConfig().insertOption(DEVICE_STATE_CALLBACK_OPTION,
- stateCallback);
- return this;
- }
-
- /**
- * Sets a {@link CameraCaptureSession.StateCallback}.
- *
- * <p>The caller is expected to use the {@link CameraCaptureSession} instance accessed
- * through the callback methods responsibly. Generally safe usages include: (1) querying the
- * session for its properties, (2) using the callbacks to determine what state the session
- * is currently in. Generally unsafe usages include: (1) submitting a new {@link
- * CaptureRequest}, (2) stopping an existing {@link CaptureRequest}, (3) closing the
- * session, (4) attaching a new {@link Surface} to the session. When the caller uses the
- * session beyond the safe usage limits, the usage may still work in conjunction with
- * CameraX, but any strong gurantees provided by CameraX about the validity of the camera
- * state become void.
- *
- * @param stateCallback The {@link CameraCaptureSession.StateCallback}.
- * @return The current Extender.
- */
- @NonNull
- @ExperimentalCamera2Interop
- public Extender<T> setSessionStateCallback(
- @NonNull CameraCaptureSession.StateCallback stateCallback) {
- mBaseBuilder.getMutableConfig().insertOption(SESSION_STATE_CALLBACK_OPTION,
- stateCallback);
- return this;
- }
-
- /**
- * Sets a {@link CameraCaptureSession.CaptureCallback}.
- *
- * <p>The caller is expected to use the {@link CameraCaptureSession} instance accessed
- * through the callback methods responsibly. Generally safe usages include: (1) querying the
- * session for its properties. Generally unsafe usages include: (1) submitting a new {@link
- * CaptureRequest}, (2) stopping an existing {@link CaptureRequest}, (3) closing the
- * session, (4) attaching a new {@link Surface} to the session. When the caller uses the
- * session beyond the safe usage limits, the usage may still work in conjunction with
- * CameraX, but any strong gurantees provided by CameraX about the validity of the camera
- * state become void.
- *
- * <p>The caller is generally free to use the {@link CaptureRequest} and {@link
- * CaptureResult} instances accessed through the callback methods.
- *
- * @param captureCallback The {@link CameraCaptureSession.CaptureCallback}.
- * @return The current Extender.
- */
- @NonNull
- @ExperimentalCamera2Interop
- public Extender<T> setSessionCaptureCallback(
- @NonNull CameraCaptureSession.CaptureCallback captureCallback) {
- mBaseBuilder.getMutableConfig().insertOption(SESSION_CAPTURE_CALLBACK_OPTION,
- captureCallback);
- return this;
- }
-
- /**
- * Sets a CameraEventCallbacks instance.
- *
- * @param cameraEventCallbacks The CameraEventCallbacks.
- * @return The current Extender.
- * @hide
- */
- @RestrictTo(Scope.LIBRARY_GROUP)
- @NonNull
- public Extender<T> setCameraEventCallback(
- @NonNull CameraEventCallbacks cameraEventCallbacks) {
- mBaseBuilder.getMutableConfig().insertOption(CAMERA_EVENT_CALLBACK_OPTION,
- cameraEventCallbacks);
- return this;
- }
- }
-
- /**
- * Builder for creating {@link Camera2Config} instance.
- *
- * <p>Use {@link Builder} for creating {@link Config} which contains camera2 options
- * only. And use {@link Extender} to add Camera2 options on existing other {@link
- * ExtendableBuilder}.
- *
- * @hide
- */
- @RestrictTo(Scope.LIBRARY_GROUP)
- public static final class Builder implements ExtendableBuilder<Camera2Config> {
-
- private final MutableOptionsBundle mMutableOptionsBundle = MutableOptionsBundle.create();
-
- @Override
- @NonNull
- public MutableConfig getMutableConfig() {
- return mMutableOptionsBundle;
- }
-
- /**
- * Inserts new capture request option with specific {@link CaptureRequest.Key} setting.
- */
- @NonNull
- public <ValueT> Builder setCaptureRequestOption(
- @NonNull CaptureRequest.Key<ValueT> key, @NonNull ValueT value) {
- Option<Object> opt = Camera2Config.createCaptureRequestOption(key);
- mMutableOptionsBundle.insertOption(opt, value);
- return this;
- }
-
- /** Inserts options from other {@link Config} object. */
- @NonNull
- public Builder insertAllOptions(@NonNull Config config) {
- for (Option<?> option : config.listOptions()) {
- @SuppressWarnings("unchecked") // Options/values are being copied directly
- Option<Object> objectOpt = (Option<Object>) option;
- mMutableOptionsBundle.insertOption(objectOpt, config.retrieveOption(objectOpt));
- }
- return this;
- }
-
- /**
- * Builds an immutable {@link Camera2Config} from the current state.
- *
- * @return A {@link Camera2Config} populated with the current state.
- */
- @Override
- @NonNull
- public Camera2Config build() {
- return new Camera2Config(OptionsBundle.from(mMutableOptionsBundle));
- }
- }
-}
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/ExperimentalCamera2Interop.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/ExperimentalCamera2Interop.java
index e388357..d7ca31b 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/ExperimentalCamera2Interop.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/ExperimentalCamera2Interop.java
@@ -25,7 +25,7 @@
* Denotes that the annotated method uses the experimental methods which allow direct access to
* camera2 classes.
*
- * <p>The Camera2Config and Camera2Config.Extender exposes the underlying instances of camera2
+ * <p>The Camera2Interop and Camera2Interop.Extender exposes the underlying instances of camera2
* classes such CameraDevice.StateCallback, CameraCaptureSession.StateCallback and
* CameraCaptureSession.CaptureCallback. In addition the configs allow setting of camera2
* CaptureRequest parameters. However, CameraX does not provide any guarantee on how it operates
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/Camera2CameraControl.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/Camera2CameraControl.java
index b26e5fd..be4ad37 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/Camera2CameraControl.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/Camera2CameraControl.java
@@ -30,7 +30,6 @@
import androidx.annotation.RestrictTo;
import androidx.annotation.VisibleForTesting;
import androidx.annotation.WorkerThread;
-import androidx.camera.camera2.Camera2Config;
import androidx.camera.camera2.impl.annotation.CameraExecutor;
import androidx.camera.core.CameraControlInternal;
import androidx.camera.core.CaptureConfig;
@@ -295,7 +294,7 @@
CaptureConfig.Builder singleRequestBuilder = new CaptureConfig.Builder();
singleRequestBuilder.setTemplateType(getDefaultTemplate());
singleRequestBuilder.setUseRepeatingSurface(true);
- Camera2Config.Builder configBuilder = new Camera2Config.Builder();
+ Camera2ImplConfig.Builder configBuilder = new Camera2ImplConfig.Builder();
configBuilder.setCaptureRequestOption(CaptureRequest.CONTROL_AE_MODE,
getSupportedAeMode(CaptureRequest.CONTROL_AE_MODE_ON));
configBuilder.setCaptureRequestOption(CaptureRequest.FLASH_MODE,
@@ -321,7 +320,7 @@
@VisibleForTesting
@WorkerThread
Config getSessionOptions() {
- Camera2Config.Builder builder = new Camera2Config.Builder();
+ Camera2ImplConfig.Builder builder = new Camera2ImplConfig.Builder();
builder.setCaptureRequestOption(
CaptureRequest.CONTROL_MODE, CaptureRequest.CONTROL_MODE_AUTO);
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/Camera2CaptureOptionUnpacker.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/Camera2CaptureOptionUnpacker.java
index 3e618e0..4e74834 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/Camera2CaptureOptionUnpacker.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/Camera2CaptureOptionUnpacker.java
@@ -18,7 +18,6 @@
import android.hardware.camera2.CaptureRequest;
-import androidx.camera.camera2.Camera2Config;
import androidx.camera.core.CaptureConfig;
import androidx.camera.core.Config;
import androidx.camera.core.Config.Option;
@@ -52,7 +51,7 @@
builder.setImplementationOptions(implOptions);
// Get Camera2 extended options
- final Camera2Config camera2Config = new Camera2Config(config);
+ final Camera2ImplConfig camera2Config = new Camera2ImplConfig(config);
// Apply template type
builder.setTemplateType(camera2Config.getCaptureRequestTemplate(templateType));
@@ -60,11 +59,11 @@
// Add extension callbacks
builder.addCameraCaptureCallback(
CaptureCallbackContainer.create(
- camera2Config.getSessionCaptureCallbackInternal(
+ camera2Config.getSessionCaptureCallback(
Camera2CaptureCallbacks.createNoOpCallback())));
// Copy extension keys
- Camera2Config.Builder configBuilder = new Camera2Config.Builder();
+ Camera2ImplConfig.Builder configBuilder = new Camera2ImplConfig.Builder();
for (Option<?> option : camera2Config.getCaptureRequestOptions()) {
@SuppressWarnings("unchecked")
// No way to get actual type info here, so treat as Object
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/Camera2CaptureRequestBuilder.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/Camera2CaptureRequestBuilder.java
index bd1aba1..5293e18 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/Camera2CaptureRequestBuilder.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/Camera2CaptureRequestBuilder.java
@@ -24,7 +24,6 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.camera.camera2.Camera2Config;
import androidx.camera.core.CaptureConfig;
import androidx.camera.core.Config;
import androidx.camera.core.DeferrableSurface;
@@ -69,10 +68,10 @@
private static void applyImplementationOptionToCaptureBuilder(
CaptureRequest.Builder builder, Config config) {
- Camera2Config camera2Config = new Camera2Config(config);
+ Camera2ImplConfig camera2Config = new Camera2ImplConfig(config);
for (Config.Option<?> option : camera2Config.getCaptureRequestOptions()) {
/* Although type is erased below, it is safe to pass it to CaptureRequest.Builder
- because these option are created via Camera2Config.Extender.setCaptureRequestOption
+ because these option are created via Camera2Interop.Extender.setCaptureRequestOption
(CaptureRequest.Key<ValueT> key, ValueT value) and hence the type compatibility of key
and value are ensured by the compiler. */
@SuppressWarnings("unchecked")
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/Camera2ImplConfig.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/Camera2ImplConfig.java
new file mode 100644
index 0000000..91d6eb1
--- /dev/null
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/Camera2ImplConfig.java
@@ -0,0 +1,360 @@
+/*
+ * Copyright 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.camera.camera2.impl;
+
+import android.hardware.camera2.CameraCaptureSession;
+import android.hardware.camera2.CameraDevice;
+import android.hardware.camera2.CaptureRequest;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.RestrictTo;
+import androidx.annotation.RestrictTo.Scope;
+import androidx.camera.core.Config;
+import androidx.camera.core.ExtendableBuilder;
+import androidx.camera.core.MutableConfig;
+import androidx.camera.core.MutableOptionsBundle;
+import androidx.camera.core.OptionsBundle;
+
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * Internal shared implementation details for camera 2 interop.
+ *
+ * @hide
+ */
+@RestrictTo(Scope.LIBRARY_GROUP)
+public final class Camera2ImplConfig implements Config {
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY)
+ public static final String CAPTURE_REQUEST_ID_STEM = "camera2.captureRequest.option.";
+
+ // Option Declarations:
+ // *********************************************************************************************
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY)
+ public static final Config.Option<Integer> TEMPLATE_TYPE_OPTION =
+ Option.create("camera2.captureRequest.templateType", int.class);
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY)
+ public static final Option<CameraDevice.StateCallback> DEVICE_STATE_CALLBACK_OPTION =
+ Option.create("camera2.cameraDevice.stateCallback", CameraDevice.StateCallback.class);
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY)
+ public static final Option<CameraCaptureSession.StateCallback> SESSION_STATE_CALLBACK_OPTION =
+ Option.create(
+ "camera2.cameraCaptureSession.stateCallback",
+ CameraCaptureSession.StateCallback.class);
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY)
+ public static final Option<CameraCaptureSession.CaptureCallback>
+ SESSION_CAPTURE_CALLBACK_OPTION =
+ Option.create("camera2.cameraCaptureSession.captureCallback",
+ CameraCaptureSession.CaptureCallback.class);
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY)
+ public static final Option<CameraEventCallbacks> CAMERA_EVENT_CALLBACK_OPTION =
+ Option.create("camera2.cameraEvent.callback", CameraEventCallbacks.class);
+ // *********************************************************************************************
+
+ private final Config mConfig;
+
+ /**
+ * Creates a Camera2InteropInternal for reading Camera2 options from the given config.
+ *
+ * @param config The config that potentially contains Camera2 options.
+ */
+ public Camera2ImplConfig(@NonNull Config config) {
+ mConfig = config;
+ }
+
+ // Unfortunately, we can't get the Class<T> from the CaptureRequest.Key, so we're forced to
+ // erase the type. This shouldn't be a problem as long as we are only using these options
+ // within the Camera2InteropInternal and Camera2InteropInternal.Builder classes.
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY)
+ @NonNull
+ public static Option<Object> createCaptureRequestOption(@NonNull CaptureRequest.Key<?> key) {
+ return Option.create(CAPTURE_REQUEST_ID_STEM + key.getName(), Object.class, key);
+ }
+
+ /**
+ * Returns a value for the given {@link CaptureRequest.Key}.
+ *
+ * @param key The key to retrieve.
+ * @param valueIfMissing The value to return if this configuration option has not been set.
+ * @param <ValueT> The type of the value.
+ * @return The stored value or <code>valueIfMissing</code> if the value does not exist in this
+ * configuration.
+ * @hide
+ */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @Nullable
+ public <ValueT> ValueT getCaptureRequestOption(
+ @NonNull CaptureRequest.Key<ValueT> key, @Nullable ValueT valueIfMissing) {
+ @SuppressWarnings(
+ "unchecked") // Type should have been only set via Builder#setCaptureRequestOption()
+ Option<ValueT> opt = (Option<ValueT>) Camera2ImplConfig.createCaptureRequestOption(
+ key);
+ return mConfig.retrieveOption(opt, valueIfMissing);
+ }
+
+
+ /**
+ * Returns all capture request options contained in this configuration.
+ *
+ * @hide
+ */
+ @RestrictTo(Scope.LIBRARY)
+ @NonNull
+ public Set<Option<?>> getCaptureRequestOptions() {
+ final Set<Option<?>> optionSet = new HashSet<>();
+ findOptions(
+ Camera2ImplConfig.CAPTURE_REQUEST_ID_STEM,
+ new OptionMatcher() {
+ @Override
+ public boolean onOptionMatched(Option<?> option) {
+ optionSet.add(option);
+ return true;
+ }
+ });
+ return optionSet;
+ }
+
+ /**
+ * Returns the CameraDevice template from the given configuration.
+ *
+ * <p>See {@link CameraDevice} for valid template types. For example, {@link
+ * CameraDevice#TEMPLATE_PREVIEW}.
+ *
+ * @param valueIfMissing The value to return if this configuration option has not been set.
+ * @return The stored value or <code>valueIfMissing</code> if the value does not exist in this
+ * configuration.
+ * @hide
+ */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ public int getCaptureRequestTemplate(int valueIfMissing) {
+ return mConfig.retrieveOption(TEMPLATE_TYPE_OPTION, valueIfMissing);
+ }
+
+ /**
+ * Returns the stored {@link CameraDevice.StateCallback}.
+ *
+ * @param valueIfMissing The value to return if this configuration option has not been set.
+ * @return The stored value or <code>valueIfMissing</code> if the value does not exist in this
+ * configuration.
+ * @hide
+ */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @Nullable
+ public CameraDevice.StateCallback getDeviceStateCallback(
+ @Nullable CameraDevice.StateCallback valueIfMissing) {
+ return mConfig.retrieveOption(DEVICE_STATE_CALLBACK_OPTION, valueIfMissing);
+ }
+
+
+ /**
+ * Returns the stored {@link CameraCaptureSession.StateCallback}.
+ *
+ * @param valueIfMissing The value to return if this configuration option has not been set.
+ * @return The stored value or <code>valueIfMissing</code> if the value does not exist in this
+ * configuration.
+ * @hide
+ */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @Nullable
+ public CameraCaptureSession.StateCallback getSessionStateCallback(
+ @Nullable CameraCaptureSession.StateCallback valueIfMissing) {
+ return mConfig.retrieveOption(SESSION_STATE_CALLBACK_OPTION, valueIfMissing);
+ }
+
+ /**
+ * Returns the stored {@link CameraCaptureSession.CaptureCallback}.
+ *
+ * @param valueIfMissing The value to return if this configuration option has not been set.
+ * @return The stored value or <code>valueIfMissing</code> if the value does not exist in this
+ * configuration.
+ * @hide
+ */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @Nullable
+ public CameraCaptureSession.CaptureCallback getSessionCaptureCallback(
+ @Nullable CameraCaptureSession.CaptureCallback valueIfMissing) {
+ return mConfig.retrieveOption(SESSION_CAPTURE_CALLBACK_OPTION, valueIfMissing);
+ }
+
+ /**
+ * Returns the stored CameraEventCallbacks instance.
+ *
+ * @param valueIfMissing The value to return if this configuration option has not been set.
+ * @return The stored value or <code>valueIfMissing</code> if the value does not exist in this
+ * configuration.
+ * @hide
+ */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @Nullable
+ public CameraEventCallbacks getCameraEventCallback(
+ @Nullable CameraEventCallbacks valueIfMissing) {
+ return mConfig.retrieveOption(CAMERA_EVENT_CALLBACK_OPTION, valueIfMissing);
+ }
+
+ // Start of the default implementation of Config
+ // *********************************************************************************************
+
+ // Implementations of Config default methods
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @Override
+ public boolean containsOption(@NonNull Option<?> id) {
+ return mConfig.containsOption(id);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @Override
+ @Nullable
+ public <ValueT> ValueT retrieveOption(@NonNull Option<ValueT> id) {
+ return mConfig.retrieveOption(id);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @Override
+ @Nullable
+ public <ValueT> ValueT retrieveOption(@NonNull Option<ValueT> id,
+ @Nullable ValueT valueIfMissing) {
+ return mConfig.retrieveOption(id, valueIfMissing);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @Override
+ public void findOptions(@NonNull String idStem, @NonNull OptionMatcher matcher) {
+ mConfig.findOptions(idStem, matcher);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @Override
+ @NonNull
+ public Set<Option<?>> listOptions() {
+ return mConfig.listOptions();
+ }
+
+ // End of the default implementation of Config
+ // *********************************************************************************************
+
+ /**
+ * Builder for creating {@link Camera2ImplConfig} instance.
+ *
+ * <p>Use {@link Camera2ImplConfig.Builder} for creating {@link Config} which contains
+ * camera2 options only. And use
+ * {@link androidx.camera.camera2.interop.Camera2Interop.Extender} to add Camera2 options on
+ * existing other {@link
+ * ExtendableBuilder}.
+ *
+ * @hide
+ */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ public static final class Builder implements ExtendableBuilder<Camera2ImplConfig> {
+
+ private final MutableOptionsBundle mMutableOptionsBundle = MutableOptionsBundle.create();
+
+ @Override
+ @NonNull
+ public MutableConfig getMutableConfig() {
+ return mMutableOptionsBundle;
+ }
+
+ /**
+ * Inserts new capture request option with specific {@link CaptureRequest.Key} setting.
+ */
+ @NonNull
+ public <ValueT> Camera2ImplConfig.Builder setCaptureRequestOption(
+ @NonNull CaptureRequest.Key<ValueT> key, @NonNull ValueT value) {
+ Option<Object> opt = Camera2ImplConfig.createCaptureRequestOption(key);
+ mMutableOptionsBundle.insertOption(opt, value);
+ return this;
+ }
+
+ /** Inserts options from other {@link Config} object. */
+ @NonNull
+ public Camera2ImplConfig.Builder insertAllOptions(@NonNull Config config) {
+ for (Option<?> option : config.listOptions()) {
+ @SuppressWarnings("unchecked") // Options/values are being copied directly
+ Option<Object> objectOpt = (Option<Object>) option;
+ mMutableOptionsBundle.insertOption(objectOpt, config.retrieveOption(objectOpt));
+ }
+ return this;
+ }
+
+ /**
+ * Builds an immutable {@link Camera2ImplConfig} from the current state.
+ *
+ * @return A {@link Camera2ImplConfig} populated with the current state.
+ */
+ @Override
+ @NonNull
+ public Camera2ImplConfig build() {
+ return new Camera2ImplConfig(OptionsBundle.from(mMutableOptionsBundle));
+ }
+ }
+
+ /**
+ * Extends a {@link ExtendableBuilder} to add Camera2 implementation options.
+ *
+ * @param <T> the type being built by the extendable builder.
+ * @hide
+ */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ public static final class Extender<T> {
+
+ ExtendableBuilder<T> mBaseBuilder;
+
+ /**
+ * Creates an Extender that can be used to add Camera2 implementation options to another
+ * Builder.
+ *
+ * @param baseBuilder The builder being extended.
+ */
+ public Extender(@NonNull ExtendableBuilder<T> baseBuilder) {
+ mBaseBuilder = baseBuilder;
+ }
+
+ /**
+ * Sets a CameraEventCallbacks instance.
+ *
+ * @param cameraEventCallbacks The CameraEventCallbacks.
+ * @return The current Extender.
+ * @hide
+ */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public Extender<T> setCameraEventCallback(
+ @NonNull CameraEventCallbacks cameraEventCallbacks) {
+ mBaseBuilder.getMutableConfig().insertOption(CAMERA_EVENT_CALLBACK_OPTION,
+ cameraEventCallbacks);
+ return this;
+ }
+ }
+}
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/Camera2SessionOptionUnpacker.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/Camera2SessionOptionUnpacker.java
index 015b213..6790cbf 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/Camera2SessionOptionUnpacker.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/Camera2SessionOptionUnpacker.java
@@ -19,7 +19,6 @@
import android.hardware.camera2.CaptureRequest;
import androidx.annotation.NonNull;
-import androidx.camera.camera2.Camera2Config;
import androidx.camera.core.CameraCaptureSessionStateCallbacks;
import androidx.camera.core.CameraDeviceStateCallbacks;
import androidx.camera.core.Config;
@@ -60,30 +59,30 @@
builder.setImplementationOptions(implOptions);
// Get Camera2 extended options
- final Camera2Config camera2Config = new Camera2Config(config);
+ final Camera2ImplConfig camera2Config = new Camera2ImplConfig(config);
// Apply template type
builder.setTemplateType(camera2Config.getCaptureRequestTemplate(templateType));
// Add extension callbacks
builder.addDeviceStateCallback(
- camera2Config.getDeviceStateCallbackInternal(
+ camera2Config.getDeviceStateCallback(
CameraDeviceStateCallbacks.createNoOpCallback()));
builder.addSessionStateCallback(
- camera2Config.getSessionStateCallbackInternal(
+ camera2Config.getSessionStateCallback(
CameraCaptureSessionStateCallbacks.createNoOpCallback()));
builder.addCameraCaptureCallback(
CaptureCallbackContainer.create(
- camera2Config.getSessionCaptureCallbackInternal(
+ camera2Config.getSessionCaptureCallback(
Camera2CaptureCallbacks.createNoOpCallback())));
MutableOptionsBundle cameraEventConfig = MutableOptionsBundle.create();
- cameraEventConfig.insertOption(Camera2Config.CAMERA_EVENT_CALLBACK_OPTION,
+ cameraEventConfig.insertOption(Camera2ImplConfig.CAMERA_EVENT_CALLBACK_OPTION,
camera2Config.getCameraEventCallback(CameraEventCallbacks.createEmptyCallback()));
builder.addImplementationOptions(cameraEventConfig);
// Copy extension keys
- Camera2Config.Builder configBuilder = new Camera2Config.Builder();
+ Camera2ImplConfig.Builder configBuilder = new Camera2ImplConfig.Builder();
for (Option<?> option : camera2Config.getCaptureRequestOptions()) {
@SuppressWarnings("unchecked")
// No way to get actual type info here, so treat as Object
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/CaptureSession.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/CaptureSession.java
index 4f1453f..7ee8cde 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/CaptureSession.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/CaptureSession.java
@@ -29,7 +29,6 @@
import androidx.annotation.GuardedBy;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.camera.camera2.Camera2Config;
import androidx.camera.camera2.impl.annotation.CameraExecutor;
import androidx.camera.camera2.impl.compat.CameraCaptureSessionCompat;
import androidx.camera.camera2.impl.compat.CameraDeviceCompat;
@@ -250,7 +249,7 @@
CameraCaptureSessionStateCallbacks.createComboCallback(callbacks);
// Start check preset CaptureStage information.
- CameraEventCallbacks eventCallbacks = new Camera2Config(
+ CameraEventCallbacks eventCallbacks = new Camera2ImplConfig(
sessionConfig.getImplementationOptions()).getCameraEventCallback(
CameraEventCallbacks.createEmptyCallback());
List<CaptureConfig> presetList =
@@ -320,7 +319,7 @@
case OPENED:
// Only issue onDisableSession requests at OPENED state.
if (mSessionConfig != null) {
- CameraEventCallbacks eventCallbacks = new Camera2Config(
+ CameraEventCallbacks eventCallbacks = new Camera2ImplConfig(
mSessionConfig.getImplementationOptions()).getCameraEventCallback(
CameraEventCallbacks.createEmptyCallback());
List<CaptureConfig> configList =
@@ -513,7 +512,7 @@
// P2 SessionConfig options
CaptureConfig.Builder captureConfigBuilder = CaptureConfig.Builder.from(captureConfig);
- CameraEventCallbacks eventCallbacks = new Camera2Config(
+ CameraEventCallbacks eventCallbacks = new Camera2ImplConfig(
mSessionConfig.getImplementationOptions()).getCameraEventCallback(
CameraEventCallbacks.createEmptyCallback());
@@ -750,7 +749,7 @@
// Issue capture request of enableSession if exists.
if (mSessionConfig != null) {
Config implOptions = mSessionConfig.getImplementationOptions();
- CameraEventCallbacks eventCallbacks = new Camera2Config(
+ CameraEventCallbacks eventCallbacks = new Camera2ImplConfig(
implOptions).getCameraEventCallback(
CameraEventCallbacks.createEmptyCallback());
List<CaptureConfig> list =
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/FocusMeteringControl.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/FocusMeteringControl.java
index 8072995..fa840c5 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/FocusMeteringControl.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/FocusMeteringControl.java
@@ -28,7 +28,6 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.WorkerThread;
-import androidx.camera.camera2.Camera2Config;
import androidx.camera.camera2.impl.annotation.CameraExecutor;
import androidx.camera.core.CameraControl;
import androidx.camera.core.CaptureConfig;
@@ -132,7 +131,7 @@
* applies to all repeating requests and single requests.
*/
@WorkerThread
- void addFocusMeteringOptions(@NonNull Camera2Config.Builder configBuilder) {
+ void addFocusMeteringOptions(@NonNull Camera2ImplConfig.Builder configBuilder) {
int afMode = mIsInAfAutoMode
? CaptureRequest.CONTROL_AF_MODE_AUTO
: CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE;
@@ -304,7 +303,7 @@
CaptureConfig.Builder builder = new CaptureConfig.Builder();
builder.setTemplateType(getDefaultTemplate());
builder.setUseRepeatingSurface(true);
- Camera2Config.Builder configBuilder = new Camera2Config.Builder();
+ Camera2ImplConfig.Builder configBuilder = new Camera2ImplConfig.Builder();
configBuilder.setCaptureRequestOption(CaptureRequest.CONTROL_AF_TRIGGER,
CaptureRequest.CONTROL_AF_TRIGGER_START);
builder.addImplementationOptions(configBuilder.build());
@@ -320,7 +319,7 @@
CaptureConfig.Builder builder = new CaptureConfig.Builder();
builder.setTemplateType(getDefaultTemplate());
builder.setUseRepeatingSurface(true);
- Camera2Config.Builder configBuilder = new Camera2Config.Builder();
+ Camera2ImplConfig.Builder configBuilder = new Camera2ImplConfig.Builder();
configBuilder.setCaptureRequestOption(CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER,
CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER_START);
builder.addImplementationOptions(configBuilder.build());
@@ -338,7 +337,7 @@
builder.setUseRepeatingSurface(true);
builder.setTemplateType(getDefaultTemplate());
- Camera2Config.Builder configBuilder = new Camera2Config.Builder();
+ Camera2ImplConfig.Builder configBuilder = new Camera2ImplConfig.Builder();
if (cancelAfTrigger) {
configBuilder.setCaptureRequestOption(CaptureRequest.CONTROL_AF_TRIGGER,
CaptureRequest.CONTROL_AF_TRIGGER_CANCEL);
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/ImageCaptureOptionUnpacker.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/ImageCaptureOptionUnpacker.java
index 3197135..64993c6 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/ImageCaptureOptionUnpacker.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/ImageCaptureOptionUnpacker.java
@@ -20,7 +20,6 @@
import android.hardware.camera2.CaptureRequest;
import android.os.Build;
-import androidx.camera.camera2.Camera2Config;
import androidx.camera.core.CaptureConfig;
import androidx.camera.core.DeviceProperties;
import androidx.camera.core.ImageCapture.CaptureMode;
@@ -46,7 +45,7 @@
}
ImageCaptureConfig imageCaptureConfig = (ImageCaptureConfig) config;
- Camera2Config.Builder camera2ConfigBuilder = new Camera2Config.Builder();
+ Camera2ImplConfig.Builder camera2ConfigBuilder = new Camera2ImplConfig.Builder();
if (imageCaptureConfig.hasCaptureMode()) {
applyPixelHdrPlusChangeForCaptureMode(imageCaptureConfig.getCaptureMode(),
@@ -64,7 +63,7 @@
// module.
@SuppressLint("NewApi")
private void applyPixelHdrPlusChangeForCaptureMode(@CaptureMode int captureMode,
- Camera2Config.Builder builder) {
+ Camera2ImplConfig.Builder builder) {
if ("Google".equals(mDeviceProperties.manufacturer())
&& ("Pixel 2".equals(mDeviceProperties.model())
|| "Pixel 3".equals(mDeviceProperties.model()))) {
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/interop/Camera2Interop.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/interop/Camera2Interop.java
new file mode 100644
index 0000000..89db3a8
--- /dev/null
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/interop/Camera2Interop.java
@@ -0,0 +1,169 @@
+/*
+ * Copyright 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.camera.camera2.interop;
+
+import static androidx.camera.camera2.impl.Camera2ImplConfig.DEVICE_STATE_CALLBACK_OPTION;
+import static androidx.camera.camera2.impl.Camera2ImplConfig.SESSION_CAPTURE_CALLBACK_OPTION;
+import static androidx.camera.camera2.impl.Camera2ImplConfig.SESSION_STATE_CALLBACK_OPTION;
+import static androidx.camera.camera2.impl.Camera2ImplConfig.TEMPLATE_TYPE_OPTION;
+
+import android.hardware.camera2.CameraCaptureSession;
+import android.hardware.camera2.CameraDevice;
+import android.hardware.camera2.CaptureRequest;
+import android.hardware.camera2.CaptureResult;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.RestrictTo;
+import androidx.annotation.RestrictTo.Scope;
+import androidx.camera.camera2.ExperimentalCamera2Interop;
+import androidx.camera.camera2.impl.Camera2ImplConfig;
+import androidx.camera.core.Config;
+import androidx.camera.core.ExtendableBuilder;
+
+/** Utilities related to interoperability with the {@link android.hardware.camera2} APIs. */
+@ExperimentalCamera2Interop
+public final class Camera2Interop {
+
+ /**
+ * Extends a {@link ExtendableBuilder} to add Camera2 options.
+ *
+ * @param <T> the type being built by the extendable builder.
+ */
+ public static final class Extender<T> {
+
+ ExtendableBuilder<T> mBaseBuilder;
+
+ /**
+ * Creates an Extender that can be used to add Camera2 options to another Builder.
+ *
+ * @param baseBuilder The builder being extended.
+ */
+ public Extender(@NonNull ExtendableBuilder<T> baseBuilder) {
+ mBaseBuilder = baseBuilder;
+ }
+
+ /**
+ * Sets a {@link CaptureRequest.Key} and Value on the configuration.
+ *
+ * @param key The {@link CaptureRequest.Key} which will be set.
+ * @param value The value for the key.
+ * @param <ValueT> The type of the value.
+ * @return The current Extender.
+ */
+ @NonNull
+ public <ValueT> Extender<T> setCaptureRequestOption(
+ @NonNull CaptureRequest.Key<ValueT> key, @NonNull ValueT value) {
+ // Reify the type so we can obtain the class
+ Config.Option<Object> opt = Camera2ImplConfig.createCaptureRequestOption(key);
+ mBaseBuilder.getMutableConfig().insertOption(opt, value);
+ return this;
+ }
+
+ /**
+ * Sets a CameraDevice template on the given configuration.
+ *
+ * <p>See {@link CameraDevice} for valid template types. For example, {@link
+ * CameraDevice#TEMPLATE_PREVIEW}.
+ *
+ * @param templateType The template type to set.
+ * @return The current Extender.
+ * @hide
+ */
+ @RestrictTo(Scope.LIBRARY)
+ @NonNull
+ public Extender<T> setCaptureRequestTemplate(int templateType) {
+ mBaseBuilder.getMutableConfig().insertOption(TEMPLATE_TYPE_OPTION, templateType);
+ return this;
+ }
+
+ /**
+ * Sets a {@link CameraDevice.StateCallback}.
+ *
+ * <p>The caller is expected to use the {@link CameraDevice} instance accessed through the
+ * callback methods responsibly. Generally safe usages include: (1) querying the device for
+ * its id, (2) using the callbacks to determine what state the device is currently in.
+ * Generally unsafe usages include: (1) creating a new {@link CameraCaptureSession}, (2)
+ * creating a new {@link CaptureRequest}, (3) closing the device. When the caller uses the
+ * device beyond the safe usage limits, the usage may still work in conjunction with
+ * CameraX, but any strong guarantees provided by CameraX about the validity of the camera
+ * state become void.
+ *
+ * @param stateCallback The {@link CameraDevice.StateCallback}.
+ * @return The current Extender.
+ */
+ @NonNull
+ public Extender<T> setDeviceStateCallback(
+ @NonNull CameraDevice.StateCallback stateCallback) {
+ mBaseBuilder.getMutableConfig().insertOption(DEVICE_STATE_CALLBACK_OPTION,
+ stateCallback);
+ return this;
+ }
+
+ /**
+ * Sets a {@link CameraCaptureSession.StateCallback}.
+ *
+ * <p>The caller is expected to use the {@link CameraCaptureSession} instance accessed
+ * through the callback methods responsibly. Generally safe usages include: (1) querying the
+ * session for its properties, (2) using the callbacks to determine what state the session
+ * is currently in. Generally unsafe usages include: (1) submitting a new {@link
+ * CaptureRequest}, (2) stopping an existing {@link CaptureRequest}, (3) closing the
+ * session, (4) attaching a new {@link android.view.Surface} to the session. When the
+ * caller uses the session beyond the safe usage limits, the usage may still work in
+ * conjunction with CameraX, but any strong guarantees provided by CameraX about the
+ * validity of the camera state become void.
+ *
+ * @param stateCallback The {@link CameraCaptureSession.StateCallback}.
+ * @return The current Extender.
+ */
+ @NonNull
+ public Extender<T> setSessionStateCallback(
+ @NonNull CameraCaptureSession.StateCallback stateCallback) {
+ mBaseBuilder.getMutableConfig().insertOption(SESSION_STATE_CALLBACK_OPTION,
+ stateCallback);
+ return this;
+ }
+
+ /**
+ * Sets a {@link CameraCaptureSession.CaptureCallback}.
+ *
+ * <p>The caller is expected to use the {@link CameraCaptureSession} instance accessed
+ * through the callback methods responsibly. Generally safe usages include: (1) querying the
+ * session for its properties. Generally unsafe usages include: (1) submitting a new {@link
+ * CaptureRequest}, (2) stopping an existing {@link CaptureRequest}, (3) closing the
+ * session, (4) attaching a new {@link android.view.Surface} to the session. When the
+ * caller uses the session beyond the safe usage limits, the usage may still work in
+ * conjunction with CameraX, but any strong guarantees provided by CameraX about the
+ * validity of the camera state become void.
+ *
+ * <p>The caller is generally free to use the {@link CaptureRequest} and {@link
+ * CaptureResult} instances accessed through the callback methods.
+ *
+ * @param captureCallback The {@link CameraCaptureSession.CaptureCallback}.
+ * @return The current Extender.
+ */
+ @NonNull
+ public Extender<T> setSessionCaptureCallback(
+ @NonNull CameraCaptureSession.CaptureCallback captureCallback) {
+ mBaseBuilder.getMutableConfig().insertOption(SESSION_CAPTURE_CALLBACK_OPTION,
+ captureCallback);
+ return this;
+ }
+ }
+
+ // Ensure this class isn't instantiated
+ private Camera2Interop() {}
+}
diff --git a/camera/camera-camera2/src/test/java/androidx/camera/camera2/impl/Camera2CaptureOptionUnpackerTest.java b/camera/camera-camera2/src/test/java/androidx/camera/camera2/impl/Camera2CaptureOptionUnpackerTest.java
index 3bb172c..2501a41 100644
--- a/camera/camera-camera2/src/test/java/androidx/camera/camera2/impl/Camera2CaptureOptionUnpackerTest.java
+++ b/camera/camera-camera2/src/test/java/androidx/camera/camera2/impl/Camera2CaptureOptionUnpackerTest.java
@@ -25,8 +25,8 @@
import android.os.Build;
import androidx.annotation.experimental.UseExperimental;
-import androidx.camera.camera2.Camera2Config;
import androidx.camera.camera2.ExperimentalCamera2Interop;
+import androidx.camera.camera2.interop.Camera2Interop;
import androidx.camera.core.CameraCaptureCallback;
import androidx.camera.core.CaptureConfig;
import androidx.camera.core.ImageCapture;
@@ -58,7 +58,7 @@
ImageCapture.Builder imageCaptureBuilder = new ImageCapture.Builder();
CaptureCallback captureCallback = mock(CaptureCallback.class);
- new Camera2Config.Extender<>(imageCaptureBuilder)
+ new Camera2Interop.Extender<>(imageCaptureBuilder)
.setSessionCaptureCallback(captureCallback);
CaptureConfig.Builder captureBuilder = new CaptureConfig.Builder();
@@ -77,7 +77,7 @@
ImageCapture.Builder imageCaptureConfigBuilder = new ImageCapture.Builder();
// Add 2 options to ensure that multiple options can be unpacked.
- new Camera2Config.Extender<>(imageCaptureConfigBuilder)
+ new Camera2Interop.Extender<>(imageCaptureConfigBuilder)
.setCaptureRequestOption(
CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_AUTO)
.setCaptureRequestOption(
@@ -87,12 +87,12 @@
mUnpacker.unpack(imageCaptureConfigBuilder.getUseCaseConfig(), captureBuilder);
CaptureConfig captureConfig = captureBuilder.build();
- Camera2Config config = new Camera2Config(captureConfig.getImplementationOptions());
+ Camera2ImplConfig config = new Camera2ImplConfig(captureConfig.getImplementationOptions());
- assertThat(config.getCaptureRequestOptionInternal(
+ assertThat(config.getCaptureRequestOption(
CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_OFF))
.isEqualTo(CaptureRequest.CONTROL_AF_MODE_AUTO);
- assertThat(config.getCaptureRequestOptionInternal(
+ assertThat(config.getCaptureRequestOption(
CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_OFF))
.isEqualTo(CaptureRequest.FLASH_MODE_TORCH);
}
diff --git a/camera/camera-camera2/src/test/java/androidx/camera/camera2/impl/Camera2SessionOptionUnpackerTest.java b/camera/camera-camera2/src/test/java/androidx/camera/camera2/impl/Camera2SessionOptionUnpackerTest.java
index e776e93..3f907d9 100644
--- a/camera/camera-camera2/src/test/java/androidx/camera/camera2/impl/Camera2SessionOptionUnpackerTest.java
+++ b/camera/camera-camera2/src/test/java/androidx/camera/camera2/impl/Camera2SessionOptionUnpackerTest.java
@@ -28,8 +28,8 @@
import android.os.Build;
import androidx.annotation.experimental.UseExperimental;
-import androidx.camera.camera2.Camera2Config;
import androidx.camera.camera2.ExperimentalCamera2Interop;
+import androidx.camera.camera2.interop.Camera2Interop;
import androidx.camera.core.CameraCaptureCallback;
import androidx.camera.core.ImageCapture;
import androidx.camera.core.SessionConfig;
@@ -66,10 +66,11 @@
CameraEventCallbacks cameraEventCallbacks = mock(CameraEventCallbacks.class);
when(cameraEventCallbacks.clone()).thenReturn(cameraEventCallbacks);
- new Camera2Config.Extender<>(imageCaptureBuilder)
+ new Camera2Interop.Extender<>(imageCaptureBuilder)
.setSessionCaptureCallback(captureCallback)
.setDeviceStateCallback(deviceCallback)
- .setSessionStateCallback(sessionStateCallback)
+ .setSessionStateCallback(sessionStateCallback);
+ new Camera2ImplConfig.Extender<>(imageCaptureBuilder)
.setCameraEventCallback(cameraEventCallbacks);
SessionConfig.Builder sessionBuilder = new SessionConfig.Builder();
@@ -88,7 +89,8 @@
assertThat(sessionConfig.getSessionStateCallbacks())
.containsExactly(sessionStateCallback);
assertThat(
- new Camera2Config(sessionConfig.getImplementationOptions()).getCameraEventCallback(
+ new Camera2ImplConfig(
+ sessionConfig.getImplementationOptions()).getCameraEventCallback(
null)).isEqualTo(cameraEventCallbacks);
}
@@ -98,7 +100,7 @@
ImageCapture.Builder imageCaptureConfigBuilder = new ImageCapture.Builder();
// Add 2 options to ensure that multiple options can be unpacked.
- new Camera2Config.Extender<>(imageCaptureConfigBuilder)
+ new Camera2Interop.Extender<>(imageCaptureConfigBuilder)
.setCaptureRequestOption(
CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_AUTO)
.setCaptureRequestOption(
@@ -108,12 +110,12 @@
mUnpacker.unpack(imageCaptureConfigBuilder.getUseCaseConfig(), sessionBuilder);
SessionConfig sessionConfig = sessionBuilder.build();
- Camera2Config config = new Camera2Config(sessionConfig.getImplementationOptions());
+ Camera2ImplConfig config = new Camera2ImplConfig(sessionConfig.getImplementationOptions());
- assertThat(config.getCaptureRequestOptionInternal(
+ assertThat(config.getCaptureRequestOption(
CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_OFF))
.isEqualTo(CaptureRequest.CONTROL_AF_MODE_AUTO);
- assertThat(config.getCaptureRequestOptionInternal(
+ assertThat(config.getCaptureRequestOption(
CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_OFF))
.isEqualTo(CaptureRequest.FLASH_MODE_TORCH);
}
diff --git a/camera/camera-camera2/src/test/java/androidx/camera/camera2/impl/FocusMeteringControlTest.java b/camera/camera-camera2/src/test/java/androidx/camera/camera2/impl/FocusMeteringControlTest.java
index 4b360d4..d122e9f 100644
--- a/camera/camera-camera2/src/test/java/androidx/camera/camera2/impl/FocusMeteringControlTest.java
+++ b/camera/camera-camera2/src/test/java/androidx/camera/camera2/impl/FocusMeteringControlTest.java
@@ -40,7 +40,6 @@
import android.util.Rational;
import android.util.Size;
-import androidx.camera.camera2.Camera2Config;
import androidx.camera.camera2.impl.Camera2CameraControl.CaptureResultListener;
import androidx.camera.core.CameraControlInternal;
import androidx.camera.core.FocusMeteringAction;
@@ -199,29 +198,29 @@
}
private MeteringRectangle[] getAfRects(FocusMeteringControl control) {
- Camera2Config.Builder configBuilder = new Camera2Config.Builder();
+ Camera2ImplConfig.Builder configBuilder = new Camera2ImplConfig.Builder();
control.addFocusMeteringOptions(configBuilder);
- Camera2Config config = configBuilder.build();
+ Camera2ImplConfig config = configBuilder.build();
- return config.getCaptureRequestOptionInternal(CaptureRequest.CONTROL_AF_REGIONS,
+ return config.getCaptureRequestOption(CaptureRequest.CONTROL_AF_REGIONS,
new MeteringRectangle[]{});
}
private MeteringRectangle[] getAeRects(FocusMeteringControl control) {
- Camera2Config.Builder configBuilder = new Camera2Config.Builder();
+ Camera2ImplConfig.Builder configBuilder = new Camera2ImplConfig.Builder();
control.addFocusMeteringOptions(configBuilder);
- Camera2Config config = configBuilder.build();
+ Camera2ImplConfig config = configBuilder.build();
- return config.getCaptureRequestOptionInternal(CaptureRequest.CONTROL_AE_REGIONS,
+ return config.getCaptureRequestOption(CaptureRequest.CONTROL_AE_REGIONS,
new MeteringRectangle[]{});
}
private MeteringRectangle[] getAwbRects(FocusMeteringControl control) {
- Camera2Config.Builder configBuilder = new Camera2Config.Builder();
+ Camera2ImplConfig.Builder configBuilder = new Camera2ImplConfig.Builder();
control.addFocusMeteringOptions(configBuilder);
- Camera2Config config = configBuilder.build();
+ Camera2ImplConfig config = configBuilder.build();
- return config.getCaptureRequestOptionInternal(CaptureRequest.CONTROL_AWB_REGIONS,
+ return config.getCaptureRequestOption(CaptureRequest.CONTROL_AWB_REGIONS,
new MeteringRectangle[]{});
}
@@ -748,9 +747,9 @@
}
private void verifyAfMode(int expectAfMode) {
- Camera2Config.Builder builder1 = new Camera2Config.Builder();
+ Camera2ImplConfig.Builder builder1 = new Camera2ImplConfig.Builder();
mFocusMeteringControl.addFocusMeteringOptions(builder1);
- assertThat(builder1.build().getCaptureRequestOptionInternal(
+ assertThat(builder1.build().getCaptureRequestOption(
CaptureRequest.CONTROL_AF_MODE, null))
.isEqualTo(expectAfMode);
}
diff --git a/camera/camera-camera2/src/test/java/androidx/camera/camera2/impl/ImageCaptureOptionUnpackerTest.java b/camera/camera-camera2/src/test/java/androidx/camera/camera2/impl/ImageCaptureOptionUnpackerTest.java
index a0793ef..d88c15c 100644
--- a/camera/camera-camera2/src/test/java/androidx/camera/camera2/impl/ImageCaptureOptionUnpackerTest.java
+++ b/camera/camera-camera2/src/test/java/androidx/camera/camera2/impl/ImageCaptureOptionUnpackerTest.java
@@ -21,7 +21,6 @@
import android.hardware.camera2.CaptureRequest;
import android.os.Build;
-import androidx.camera.camera2.Camera2Config;
import androidx.camera.core.CaptureConfig;
import androidx.camera.core.DeviceProperties;
import androidx.camera.core.ImageCapture;
@@ -98,8 +97,9 @@
mUnpacker.unpack(imageCaptureConfig, captureBuilder);
CaptureConfig captureConfig = captureBuilder.build();
- Camera2Config camera2Config = new Camera2Config(captureConfig.getImplementationOptions());
- assertThat(camera2Config.getCaptureRequestOptionInternal(
+ Camera2ImplConfig camera2Config = new Camera2ImplConfig(
+ captureConfig.getImplementationOptions());
+ assertThat(camera2Config.getCaptureRequestOption(
CaptureRequest.CONTROL_ENABLE_ZSL, null))
.isNull();
}
@@ -115,8 +115,9 @@
mUnpacker.unpack(imageCaptureConfig, captureBuilder);
CaptureConfig captureConfig = captureBuilder.build();
- Camera2Config camera2Config = new Camera2Config(captureConfig.getImplementationOptions());
- assertThat(camera2Config.getCaptureRequestOptionInternal(
+ Camera2ImplConfig camera2Config = new Camera2ImplConfig(
+ captureConfig.getImplementationOptions());
+ assertThat(camera2Config.getCaptureRequestOption(
CaptureRequest.CONTROL_ENABLE_ZSL, null))
.isEqualTo(false);
}
@@ -132,8 +133,9 @@
mUnpacker.unpack(imageCaptureConfig, captureBuilder);
CaptureConfig captureConfig = captureBuilder.build();
- Camera2Config camera2Config = new Camera2Config(captureConfig.getImplementationOptions());
- assertThat(camera2Config.getCaptureRequestOptionInternal(
+ Camera2ImplConfig camera2Config = new Camera2ImplConfig(
+ captureConfig.getImplementationOptions());
+ assertThat(camera2Config.getCaptureRequestOption(
CaptureRequest.CONTROL_ENABLE_ZSL, null))
.isEqualTo(true);
}
@@ -149,8 +151,9 @@
mUnpacker.unpack(imageCaptureConfig, captureBuilder);
CaptureConfig captureConfig = captureBuilder.build();
- Camera2Config camera2Config = new Camera2Config(captureConfig.getImplementationOptions());
- assertThat(camera2Config.getCaptureRequestOptionInternal(
+ Camera2ImplConfig camera2Config = new Camera2ImplConfig(
+ captureConfig.getImplementationOptions());
+ assertThat(camera2Config.getCaptureRequestOption(
CaptureRequest.CONTROL_ENABLE_ZSL, null))
.isNull();
}
@@ -166,8 +169,9 @@
mUnpacker.unpack(imageCaptureConfig, captureBuilder);
CaptureConfig captureConfig = captureBuilder.build();
- Camera2Config camera2Config = new Camera2Config(captureConfig.getImplementationOptions());
- assertThat(camera2Config.getCaptureRequestOptionInternal(
+ Camera2ImplConfig camera2Config = new Camera2ImplConfig(
+ captureConfig.getImplementationOptions());
+ assertThat(camera2Config.getCaptureRequestOption(
CaptureRequest.CONTROL_ENABLE_ZSL, null))
.isNull();
}
@@ -183,8 +187,9 @@
mUnpacker.unpack(imageCaptureConfig, captureBuilder);
CaptureConfig captureConfig = captureBuilder.build();
- Camera2Config camera2Config = new Camera2Config(captureConfig.getImplementationOptions());
- assertThat(camera2Config.getCaptureRequestOptionInternal(
+ Camera2ImplConfig camera2Config = new Camera2ImplConfig(
+ captureConfig.getImplementationOptions());
+ assertThat(camera2Config.getCaptureRequestOption(
CaptureRequest.CONTROL_ENABLE_ZSL, null))
.isEqualTo(false);
}
@@ -200,8 +205,9 @@
mUnpacker.unpack(imageCaptureConfig, captureBuilder);
CaptureConfig captureConfig = captureBuilder.build();
- Camera2Config camera2Config = new Camera2Config(captureConfig.getImplementationOptions());
- assertThat(camera2Config.getCaptureRequestOptionInternal(
+ Camera2ImplConfig camera2Config = new Camera2ImplConfig(
+ captureConfig.getImplementationOptions());
+ assertThat(camera2Config.getCaptureRequestOption(
CaptureRequest.CONTROL_ENABLE_ZSL, null))
.isEqualTo(true);
}
@@ -217,8 +223,9 @@
mUnpacker.unpack(imageCaptureConfig, captureBuilder);
CaptureConfig captureConfig = captureBuilder.build();
- Camera2Config camera2Config = new Camera2Config(captureConfig.getImplementationOptions());
- assertThat(camera2Config.getCaptureRequestOptionInternal(
+ Camera2ImplConfig camera2Config = new Camera2ImplConfig(
+ captureConfig.getImplementationOptions());
+ assertThat(camera2Config.getCaptureRequestOption(
CaptureRequest.CONTROL_ENABLE_ZSL, null))
.isNull();
}
@@ -234,8 +241,9 @@
mUnpacker.unpack(imageCaptureConfig, captureBuilder);
CaptureConfig captureConfig = captureBuilder.build();
- Camera2Config camera2Config = new Camera2Config(captureConfig.getImplementationOptions());
- assertThat(camera2Config.getCaptureRequestOptionInternal(
+ Camera2ImplConfig camera2Config = new Camera2ImplConfig(
+ captureConfig.getImplementationOptions());
+ assertThat(camera2Config.getCaptureRequestOption(
CaptureRequest.CONTROL_ENABLE_ZSL, null))
.isNull();
}
@@ -251,8 +259,9 @@
mUnpacker.unpack(imageCaptureConfig, captureBuilder);
CaptureConfig captureConfig = captureBuilder.build();
- Camera2Config camera2Config = new Camera2Config(captureConfig.getImplementationOptions());
- assertThat(camera2Config.getCaptureRequestOptionInternal(
+ Camera2ImplConfig camera2Config = new Camera2ImplConfig(
+ captureConfig.getImplementationOptions());
+ assertThat(camera2Config.getCaptureRequestOption(
CaptureRequest.CONTROL_ENABLE_ZSL, null))
.isNull();
}
@@ -268,8 +277,9 @@
mUnpacker.unpack(imageCaptureConfig, captureBuilder);
CaptureConfig captureConfig = captureBuilder.build();
- Camera2Config camera2Config = new Camera2Config(captureConfig.getImplementationOptions());
- assertThat(camera2Config.getCaptureRequestOptionInternal(
+ Camera2ImplConfig camera2Config = new Camera2ImplConfig(
+ captureConfig.getImplementationOptions());
+ assertThat(camera2Config.getCaptureRequestOption(
CaptureRequest.CONTROL_ENABLE_ZSL, null))
.isNull();
}
diff --git a/camera/camera-extensions/src/androidTest/java/androidx/camera/extensions/ExtensionTest.java b/camera/camera-extensions/src/androidTest/java/androidx/camera/extensions/ExtensionTest.java
index 9452508..b88c247 100644
--- a/camera/camera-extensions/src/androidTest/java/androidx/camera/extensions/ExtensionTest.java
+++ b/camera/camera-extensions/src/androidTest/java/androidx/camera/extensions/ExtensionTest.java
@@ -41,7 +41,7 @@
import androidx.annotation.NonNull;
import androidx.camera.camera2.Camera2AppConfig;
-import androidx.camera.camera2.Camera2Config;
+import androidx.camera.camera2.impl.Camera2ImplConfig;
import androidx.camera.camera2.impl.CameraEventCallback;
import androidx.camera.camera2.impl.CameraEventCallbacks;
import androidx.camera.core.AppConfig;
@@ -182,7 +182,8 @@
PreviewConfig previewConfig = ExtensionsTestUtil.createPreviewConfigWithEffect(mEffectMode,
mLensFacing);
assertNotNull(previewConfig.getUseCaseEventCallback());
- CameraEventCallbacks callback1 = new Camera2Config(previewConfig).getCameraEventCallback(
+ CameraEventCallbacks callback1 = new Camera2ImplConfig(
+ previewConfig).getCameraEventCallback(
null);
assertNotNull(callback1);
assertEquals(callback1.getAllItems().size(), 1);
@@ -193,7 +194,7 @@
ExtensionsTestUtil.createImageCaptureConfigWithEffect(mEffectMode, mLensFacing);
assertNotNull(imageCaptureConfig.getUseCaseEventCallback());
assertNotNull(imageCaptureConfig.getCaptureBundle());
- CameraEventCallbacks callback2 = new Camera2Config(
+ CameraEventCallbacks callback2 = new Camera2ImplConfig(
imageCaptureConfig).getCameraEventCallback(null);
assertNotNull(callback2);
assertEquals(callback2.getAllItems().size(), 1);
diff --git a/camera/camera-extensions/src/androidTest/java/androidx/camera/extensions/ImageCaptureExtenderTest.java b/camera/camera-extensions/src/androidTest/java/androidx/camera/extensions/ImageCaptureExtenderTest.java
index 99e5937..8ad3272 100644
--- a/camera/camera-extensions/src/androidTest/java/androidx/camera/extensions/ImageCaptureExtenderTest.java
+++ b/camera/camera-extensions/src/androidTest/java/androidx/camera/extensions/ImageCaptureExtenderTest.java
@@ -39,7 +39,7 @@
import android.util.Size;
import androidx.camera.camera2.Camera2AppConfig;
-import androidx.camera.camera2.Camera2Config;
+import androidx.camera.camera2.impl.Camera2ImplConfig;
import androidx.camera.camera2.impl.CameraEventCallbacks;
import androidx.camera.core.CameraInfoUnavailableException;
import androidx.camera.core.CameraSelector;
@@ -171,7 +171,7 @@
imageCaptureAdapter).setUseCaseEventCallback(
imageCaptureAdapter).setCaptureProcessor(
mock(CaptureProcessor.class));
- new Camera2Config.Extender<>(configBuilder).setCameraEventCallback(
+ new Camera2ImplConfig.Extender<>(configBuilder).setCameraEventCallback(
new CameraEventCallbacks(imageCaptureAdapter));
ImageCapture useCase = configBuilder.build();
diff --git a/camera/camera-extensions/src/main/java/androidx/camera/extensions/AdaptingCaptureStage.java b/camera/camera-extensions/src/main/java/androidx/camera/extensions/AdaptingCaptureStage.java
index f3c728a..5394398 100644
--- a/camera/camera-extensions/src/main/java/androidx/camera/extensions/AdaptingCaptureStage.java
+++ b/camera/camera-extensions/src/main/java/androidx/camera/extensions/AdaptingCaptureStage.java
@@ -19,7 +19,7 @@
import android.hardware.camera2.CaptureRequest;
import android.util.Pair;
-import androidx.camera.camera2.Camera2Config;
+import androidx.camera.camera2.impl.Camera2ImplConfig;
import androidx.camera.core.CaptureConfig;
import androidx.camera.core.CaptureStage;
import androidx.camera.extensions.impl.CaptureStageImpl;
@@ -34,7 +34,7 @@
AdaptingCaptureStage(CaptureStageImpl impl) {
mId = impl.getId();
- Camera2Config.Builder camera2ConfigurationBuilder = new Camera2Config.Builder();
+ Camera2ImplConfig.Builder camera2ConfigurationBuilder = new Camera2ImplConfig.Builder();
for (Pair<CaptureRequest.Key, Object> captureParameter : impl.getParameters()) {
camera2ConfigurationBuilder.setCaptureRequestOption(captureParameter.first,
diff --git a/camera/camera-extensions/src/main/java/androidx/camera/extensions/ImageCaptureExtender.java b/camera/camera-extensions/src/main/java/androidx/camera/extensions/ImageCaptureExtender.java
index 2caf750..1ffabb5 100644
--- a/camera/camera-extensions/src/main/java/androidx/camera/extensions/ImageCaptureExtender.java
+++ b/camera/camera-extensions/src/main/java/androidx/camera/extensions/ImageCaptureExtender.java
@@ -25,7 +25,7 @@
import androidx.annotation.GuardedBy;
import androidx.annotation.NonNull;
-import androidx.camera.camera2.Camera2Config;
+import androidx.camera.camera2.impl.Camera2ImplConfig;
import androidx.camera.camera2.impl.CameraEventCallback;
import androidx.camera.camera2.impl.CameraEventCallbacks;
import androidx.camera.core.CameraIdFilter;
@@ -139,7 +139,7 @@
}
ImageCaptureAdapter imageCaptureAdapter = new ImageCaptureAdapter(mImpl, mEffectMode);
- new Camera2Config.Extender<>(mBuilder).setCameraEventCallback(
+ new Camera2ImplConfig.Extender<>(mBuilder).setCameraEventCallback(
new CameraEventCallbacks(imageCaptureAdapter));
mBuilder.setUseCaseEventCallback(imageCaptureAdapter);
mBuilder.setCaptureBundle(imageCaptureAdapter);
diff --git a/camera/camera-extensions/src/main/java/androidx/camera/extensions/PreviewExtender.java b/camera/camera-extensions/src/main/java/androidx/camera/extensions/PreviewExtender.java
index 525a842..939e6f5 100644
--- a/camera/camera-extensions/src/main/java/androidx/camera/extensions/PreviewExtender.java
+++ b/camera/camera-extensions/src/main/java/androidx/camera/extensions/PreviewExtender.java
@@ -25,7 +25,7 @@
import androidx.annotation.GuardedBy;
import androidx.annotation.NonNull;
-import androidx.camera.camera2.Camera2Config;
+import androidx.camera.camera2.impl.Camera2ImplConfig;
import androidx.camera.camera2.impl.CameraEventCallback;
import androidx.camera.camera2.impl.CameraEventCallbacks;
import androidx.camera.core.CameraIdFilter;
@@ -145,7 +145,7 @@
previewExtenderAdapter = new PreviewExtenderAdapter(mImpl, mEffectMode, null);
}
- new Camera2Config.Extender<>(mBuilder).setCameraEventCallback(
+ new Camera2ImplConfig.Extender<>(mBuilder).setCameraEventCallback(
new CameraEventCallbacks(previewExtenderAdapter));
mBuilder.setUseCaseEventCallback(previewExtenderAdapter);
mBuilder.getMutableConfig().insertOption(OPTION_PREVIEW_EXTENDER_MODE, mEffectMode);
diff --git a/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/PreviewProcessorTimestampTest.java b/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/PreviewProcessorTimestampTest.java
index 76621b41..3de30fe 100644
--- a/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/PreviewProcessorTimestampTest.java
+++ b/camera/integration-tests/extensionstestapp/src/androidTest/java/androidx/camera/integration/extensions/PreviewProcessorTimestampTest.java
@@ -35,8 +35,8 @@
import androidx.annotation.NonNull;
import androidx.annotation.experimental.UseExperimental;
-import androidx.camera.camera2.Camera2Config;
import androidx.camera.camera2.ExperimentalCamera2Interop;
+import androidx.camera.camera2.interop.Camera2Interop;
import androidx.camera.core.CameraSelector;
import androidx.camera.core.CameraX;
import androidx.camera.core.CaptureProcessor;
@@ -212,7 +212,7 @@
mSurfaceTextureLatch = new CountDownLatch(1);
- new Camera2Config.Extender<>(mImageCaptureBuilder).setDeviceStateCallback(
+ new Camera2Interop.Extender<>(mImageCaptureBuilder).setDeviceStateCallback(
mCameraStatusCallback);
}
diff --git a/camera/integration-tests/timingtestapp/src/main/java/androidx/camera/integration/antelope/cameracontrollers/CameraXController.kt b/camera/integration-tests/timingtestapp/src/main/java/androidx/camera/integration/antelope/cameracontrollers/CameraXController.kt
index 6eae75a..9f61472 100644
--- a/camera/integration-tests/timingtestapp/src/main/java/androidx/camera/integration/antelope/cameracontrollers/CameraXController.kt
+++ b/camera/integration-tests/timingtestapp/src/main/java/androidx/camera/integration/antelope/cameracontrollers/CameraXController.kt
@@ -23,7 +23,7 @@
import android.view.Surface
import android.view.ViewGroup
import androidx.annotation.experimental.UseExperimental
-import androidx.camera.camera2.Camera2Config
+import androidx.camera.camera2.interop.Camera2Interop
import androidx.camera.camera2.ExperimentalCamera2Interop
import androidx.camera.core.CameraSelector
import androidx.camera.core.ImageCapture
@@ -312,7 +312,7 @@
): Preview.Builder {
val configBuilder = Preview.Builder()
- Camera2Config.Extender(configBuilder)
+ Camera2Interop.Extender(configBuilder)
.setDeviceStateCallback(deviceStateCallback)
.setSessionStateCallback(sessionCaptureStateCallback)
// TODO(b/142915154): Enables focusMode when CameraX support direct AF mode setting.
@@ -335,7 +335,7 @@
val configBuilder = ImageCapture.Builder()
.setCaptureMode(ImageCapture.CaptureMode.MAXIMIZE_QUALITY)
- Camera2Config.Extender(configBuilder)
+ Camera2Interop.Extender(configBuilder)
.setDeviceStateCallback(deviceStateCallback)
.setSessionCaptureCallback(sessionCaptureCallback)
// TODO(b/142915154): Enables focusMode when CameraX support direct AF mode setting.