summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2021-06-14 18:29:34 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2021-06-14 18:29:34 +0000
commitbd39a022721442d648986257ed2c274a076c34b9 (patch)
treeb6abcb37f32b8814a5f4aa25a459d5301e26709e
parent24382da26383b1bbac9de5a6d3644276f7833141 (diff)
parentae681a09336919b4b081b89792f979482040a6b9 (diff)
downloadex-bd39a022721442d648986257ed2c274a076c34b9.tar.gz
Merge "Camera: Sync camera extensions stubs" into sc-devandroid12-dev
-rwxr-xr-xcamera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/AutoImageCaptureExtenderImpl.java7
-rwxr-xr-xcamera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/BeautyImageCaptureExtenderImpl.java7
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/BokehImageCaptureExtenderImpl.java7
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/CaptureProcessorImpl.java7
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/ExtenderStateListener.java6
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/ExtensionVersionImpl.java23
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/HdrImageCaptureExtenderImpl.java7
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/ImageCaptureExtenderImpl.java18
-rwxr-xr-xcamera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/NightImageCaptureExtenderImpl.java7
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/PreviewImageProcessorImpl.java5
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/AdvancedExtenderImpl.java20
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/AutoAdvancedExtenderImpl.java2
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/BeautyAdvancedExtenderImpl.java3
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/BokehAdvancedExtenderImpl.java2
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/Camera2OutputConfigImpl.java15
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/Camera2OutputConfigImplBuilder.java24
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/Camera2SessionConfigImpl.java2
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/Camera2SessionConfigImplBuilder.java2
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/HdrAdvancedExtenderImpl.java3
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/ImageProcessorImpl.java11
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/ImageReaderOutputConfigImpl.java2
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/ImageReferenceImpl.java2
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/NightAdvancedExtenderImpl.java3
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/OutputSurfaceImpl.java2
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/RequestProcessorImpl.java2
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/SessionProcessorImpl.java2
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/SurfaceOutputConfigImpl.java2
27 files changed, 139 insertions, 54 deletions
diff --git a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/AutoImageCaptureExtenderImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/AutoImageCaptureExtenderImpl.java
index 112eb3ef..a364d4b9 100755
--- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/AutoImageCaptureExtenderImpl.java
+++ b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/AutoImageCaptureExtenderImpl.java
@@ -18,6 +18,7 @@ package androidx.camera.extensions.impl;
import android.content.Context;
import android.hardware.camera2.CameraCharacteristics;
import android.util.Pair;
+import android.util.Range;
import android.util.Size;
import androidx.annotation.NonNull;
@@ -91,4 +92,10 @@ public final class AutoImageCaptureExtenderImpl implements ImageCaptureExtenderI
public List<Pair<Integer, Size[]>> getSupportedResolutions() {
throw new RuntimeException("Stub, replace with implementation.");
}
+
+ @Nullable
+ @Override
+ public Range<Long> getEstimatedCaptureLatencyRange(@NonNull Size captureOutputSize) {
+ throw new RuntimeException("Stub, replace with implementation.");
+ }
}
diff --git a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/BeautyImageCaptureExtenderImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/BeautyImageCaptureExtenderImpl.java
index 79dbff62..d68d8eb0 100755
--- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/BeautyImageCaptureExtenderImpl.java
+++ b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/BeautyImageCaptureExtenderImpl.java
@@ -18,6 +18,7 @@ package androidx.camera.extensions.impl;
import android.content.Context;
import android.hardware.camera2.CameraCharacteristics;
import android.util.Pair;
+import android.util.Range;
import android.util.Size;
import androidx.annotation.NonNull;
@@ -91,4 +92,10 @@ public final class BeautyImageCaptureExtenderImpl implements ImageCaptureExtende
public List<Pair<Integer, Size[]>> getSupportedResolutions() {
throw new RuntimeException("Stub, replace with implementation.");
}
+
+ @Nullable
+ @Override
+ public Range<Long> getEstimatedCaptureLatencyRange(@NonNull Size captureOutputSize) {
+ throw new RuntimeException("Stub, replace with implementation.");
+ }
}
diff --git a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/BokehImageCaptureExtenderImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/BokehImageCaptureExtenderImpl.java
index dc823c1b..b943e0ae 100644
--- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/BokehImageCaptureExtenderImpl.java
+++ b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/BokehImageCaptureExtenderImpl.java
@@ -18,6 +18,7 @@ package androidx.camera.extensions.impl;
import android.content.Context;
import android.hardware.camera2.CameraCharacteristics;
import android.util.Pair;
+import android.util.Range;
import android.util.Size;
import androidx.annotation.NonNull;
@@ -91,4 +92,10 @@ public final class BokehImageCaptureExtenderImpl implements ImageCaptureExtender
public List<Pair<Integer, Size[]>> getSupportedResolutions() {
throw new RuntimeException("Stub, replace with implementation.");
}
+
+ @Nullable
+ @Override
+ public Range<Long> getEstimatedCaptureLatencyRange(@NonNull Size captureOutputSize) {
+ throw new RuntimeException("Stub, replace with implementation.");
+ }
}
diff --git a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/CaptureProcessorImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/CaptureProcessorImpl.java
index a42275ea..90de15ab 100644
--- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/CaptureProcessorImpl.java
+++ b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/CaptureProcessorImpl.java
@@ -16,6 +16,7 @@
package androidx.camera.extensions.impl;
+import android.graphics.ImageFormat;
import android.hardware.camera2.TotalCaptureResult;
import android.media.Image;
import android.util.Pair;
@@ -35,9 +36,9 @@ public interface CaptureProcessorImpl extends ProcessorImpl {
* <p> The result of the processing step should be written to the {@link Surface} that was
* received by {@link #onOutputSurface(Surface, int)}.
*
- * @param results The map of images and metadata to process. The {@link Image} that are
- * contained within the map will become invalid after this method completes,
- * so no references to them should be kept.
+ * @param results The map of {@link ImageFormat#YUV_420_888} format images and metadata to
+ * process. The {@link Image} that are contained within the map will become
+ * invalid after this method completes, so no references to them should be kept.
*/
void process(Map<Integer, Pair<Image, TotalCaptureResult>> results);
}
diff --git a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/ExtenderStateListener.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/ExtenderStateListener.java
index f1817a77..2879568f 100644
--- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/ExtenderStateListener.java
+++ b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/ExtenderStateListener.java
@@ -20,6 +20,7 @@ import android.content.Context;
import android.hardware.camera2.CameraCharacteristics;
import android.hardware.camera2.CameraDevice;
import android.hardware.camera2.CaptureRequest;
+import android.hardware.camera2.params.SessionConfiguration;
/**
* Provides interfaces that the OEM needs to implement to handle the state change.
@@ -51,8 +52,9 @@ public interface ExtenderStateListener {
* This will be invoked before creating a
* {@link android.hardware.camera2.CameraCaptureSession}. The {@link CaptureRequest}
* parameters returned via {@link CaptureStageImpl} will be passed to the camera device as
- * part of the capture session initialization via setSessionParameters(). The valid parameter
- * is a subset of the available capture request parameters.
+ * part of the capture session initialization via
+ * {@link SessionConfiguration#setSessionParameters(CaptureRequest)} which only supported from
+ * API level 28. The valid parameter is a subset of the available capture request parameters.
*
* @return The request information to set the session wide camera parameters.
*/
diff --git a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/ExtensionVersionImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/ExtensionVersionImpl.java
index 7f3bbe2f..7769551f 100644
--- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/ExtensionVersionImpl.java
+++ b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/ExtensionVersionImpl.java
@@ -53,4 +53,27 @@ public class ExtensionVersionImpl {
public String checkApiVersion(String version) {
throw new RuntimeException("Stub, replace with implementation.");
}
+
+ /**
+ * Specify whether or not CameraX should invoke the AdvancedExtenderImpl instead of
+ * PreviewExtenderImpl/ImageCaptureExtenderImpl.
+ *
+ * <p>Starting from version 1.2, a set of alternative interfaces called advanced extender for
+ * implementing extensions are provided to OEMs as another option. OEMs can continue using
+ * previous interfaces (PreviewExtenderImpl/ImageCaptureExtenderImpl, also called basic
+ * extender).
+ *
+ * <p>OEMs should return false here if only basic extender is implemented. When returning true,
+ * CameraX will invoke the AdvancedExtenderImpl implementation in advanced package for all
+ * types of extension modes.
+ *
+ * <p>ExtensionVersionImpl, InitializerImpl will still be called for both basic and advanced
+ * extender implementation paths.
+ *
+ * @return true if AdvancedExtenderImpl is implemented
+ * @since 1.2
+ */
+ public boolean isAdvancedExtenderImplemented() {
+ return false;
+ }
}
diff --git a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/HdrImageCaptureExtenderImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/HdrImageCaptureExtenderImpl.java
index a277fba4..66f4a501 100644
--- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/HdrImageCaptureExtenderImpl.java
+++ b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/HdrImageCaptureExtenderImpl.java
@@ -18,6 +18,7 @@ package androidx.camera.extensions.impl;
import android.content.Context;
import android.hardware.camera2.CameraCharacteristics;
import android.util.Pair;
+import android.util.Range;
import android.util.Size;
import androidx.annotation.NonNull;
@@ -91,4 +92,10 @@ public final class HdrImageCaptureExtenderImpl implements ImageCaptureExtenderIm
public List<Pair<Integer, Size[]>> getSupportedResolutions() {
throw new RuntimeException("Stub, replace with implementation.");
}
+
+ @Nullable
+ @Override
+ public Range<Long> getEstimatedCaptureLatencyRange(@NonNull Size captureOutputSize) {
+ throw new RuntimeException("Stub, replace with implementation.");
+ }
}
diff --git a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/ImageCaptureExtenderImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/ImageCaptureExtenderImpl.java
index b95c047c..571c2e38 100644
--- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/ImageCaptureExtenderImpl.java
+++ b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/ImageCaptureExtenderImpl.java
@@ -19,6 +19,7 @@ package androidx.camera.extensions.impl;
import android.graphics.ImageFormat;
import android.hardware.camera2.CameraCharacteristics;
import android.util.Pair;
+import android.util.Range;
import android.util.Size;
import androidx.annotation.Nullable;
@@ -80,4 +81,21 @@ public interface ImageCaptureExtenderImpl extends ExtenderStateListener {
*/
@Nullable
List<Pair<Integer, Size[]>> getSupportedResolutions();
+
+ /**
+ * Returns the estimated capture latency range in milliseconds for the target capture
+ * resolution.
+ *
+ * <p>This includes the time spent processing the multi-frame capture request along with any
+ * additional time for encoding of the processed buffer in the framework if necessary.
+ *
+ * @param captureOutputSize size of the capture output surface. If it is null or not in the
+ * supported output sizes, maximum capture output size is used for
+ * the estimation.
+ * @return the range of estimated minimal and maximal capture latency in milliseconds, or
+ * null if no capture latency info can be provided.
+ * @since 1.2
+ */
+ @Nullable
+ Range<Long> getEstimatedCaptureLatencyRange(@Nullable Size captureOutputSize);
}
diff --git a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/NightImageCaptureExtenderImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/NightImageCaptureExtenderImpl.java
index 8570fd34..3b39cf1f 100755
--- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/NightImageCaptureExtenderImpl.java
+++ b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/NightImageCaptureExtenderImpl.java
@@ -18,6 +18,7 @@ package androidx.camera.extensions.impl;
import android.content.Context;
import android.hardware.camera2.CameraCharacteristics;
import android.util.Pair;
+import android.util.Range;
import android.util.Size;
import androidx.annotation.NonNull;
@@ -91,4 +92,10 @@ public final class NightImageCaptureExtenderImpl implements ImageCaptureExtender
public List<Pair<Integer, Size[]>> getSupportedResolutions() {
throw new RuntimeException("Stub, replace with implementation.");
}
+
+ @Nullable
+ @Override
+ public Range<Long> getEstimatedCaptureLatencyRange(@NonNull Size captureOutputSize) {
+ throw new RuntimeException("Stub, replace with implementation.");
+ }
}
diff --git a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/PreviewImageProcessorImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/PreviewImageProcessorImpl.java
index 629f13cc..e7ecaa1d 100644
--- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/PreviewImageProcessorImpl.java
+++ b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/PreviewImageProcessorImpl.java
@@ -16,6 +16,7 @@
package androidx.camera.extensions.impl;
+import android.graphics.ImageFormat;
import android.hardware.camera2.TotalCaptureResult;
import android.media.Image;
@@ -32,8 +33,8 @@ public interface PreviewImageProcessorImpl extends ProcessorImpl {
* <p> The result of the processing step should be written to the {@link android.view.Surface}
* that was received by {@link ProcessorImpl#onOutputSurface(android.view.Surface, int)}.
*
- * @param image The image to process. This will be invalid after the method completes so no
- * reference to it should be kept.
+ * @param image The {@link ImageFormat#YUV_420_888} format image to process. This will be
+ * invalid after the method completes so no reference to it should be kept.
* @param result The metadata associated with the image to process.
*/
void process(Image image, TotalCaptureResult result);
diff --git a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/AdvancedExtenderImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/AdvancedExtenderImpl.java
index 572ccfa5..86424c41 100644
--- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/AdvancedExtenderImpl.java
+++ b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/AdvancedExtenderImpl.java
@@ -16,10 +16,13 @@
package androidx.camera.extensions.impl.advanced;
+import android.annotation.SuppressLint;
import android.hardware.camera2.CameraCharacteristics;
import android.util.Range;
import android.util.Size;
+import androidx.camera.extensions.impl.ExtensionVersionImpl;
+
import java.util.List;
import java.util.Map;
@@ -33,20 +36,19 @@ import java.util.Map;
* Able to triggers single or repeating request with the capabilities to specify target surfaces,
* template id and parameters.
*
- * <p>OEM should be able to implement the basic extender interface functionality using this
- * advanced extender interface.
- *
* <p>OEM needs to implement it with class name HdrAdvancedExtenderImpl for HDR,
* NightAdvancedExtenderImpl for night mode, BeautyAdvancedExtenderImpl for beauty mode,
* BokehAdvancedExtenderImpl for bokeh mode and AutoAdvancedExtenderImpl for auto mode.
*
- * <p>If both advanced and basic extender implementations are found and apps are built with
- * interface 1.2 and above, advanced extender will be used. OEM is okay to implement advanced
+ * <p>OEMs are required to return true in
+ * {@link ExtensionVersionImpl#isAdvancedExtenderImplemented()} in order to request CameraX to
+ * use advanced extender over basic extender. OEM is okay to implement advanced
* extender only Or basic extender only. However the caveat of advanced-only implementation is,
* extensions will be unavailable on the apps using interfaces prior to 1.2.
*
* @since 1.2
*/
+@SuppressLint("UnknownNullness")
public interface AdvancedExtenderImpl {
/**
@@ -104,8 +106,8 @@ public interface AdvancedExtenderImpl {
* <p>The preview surface format in the CameraCaptureSession may not be identical to the
* supported preview output format returned here. Like in the basic extender interface, the
* preview PRIVATE surface could be added to the CameraCaptureSession and OEM processes it in
- * the HAL. Or OEM can configure a intermediate YUV surface of the same size and writes the
- * output to the preview output surface.
+ * the HAL. Alternatively OEM can configure a intermediate YUV surface of the same size and
+ * writes the output to the preview output surface.
*/
Map<Integer, List<Size>> getSupportedPreviewOutputResolutions(String cameraId);
@@ -114,8 +116,8 @@ public interface AdvancedExtenderImpl {
* both JPEG and YUV_420_888 format output.
*
* <p>Like in the basic extender interface, the surface created with this supported
- * format/size could be either added in CameraCaptureSession with HAL processing OR we
- * configure intermediate surfaces(YUV/RAW..) and writes the output to the output surface.
+ * format/size could be either added in CameraCaptureSession with HAL processing OR it
+ * configures intermediate surfaces(YUV/RAW..) and writes the output to the output surface.
*/
Map<Integer, List<Size>> getSupportedCaptureOutputResolutions(String cameraId);
diff --git a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/AutoAdvancedExtenderImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/AutoAdvancedExtenderImpl.java
index 2f05ccc0..7753258b 100644
--- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/AutoAdvancedExtenderImpl.java
+++ b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/AutoAdvancedExtenderImpl.java
@@ -16,6 +16,7 @@
package androidx.camera.extensions.impl.advanced;
+import android.annotation.SuppressLint;
import android.hardware.camera2.CameraCharacteristics;
import android.util.Range;
import android.util.Size;
@@ -30,6 +31,7 @@ import java.util.Map;
*
* @since 1.2
*/
+@SuppressLint("UnknownNullness")
public class AutoAdvancedExtenderImpl implements AdvancedExtenderImpl {
public AutoAdvancedExtenderImpl() {
}
diff --git a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/BeautyAdvancedExtenderImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/BeautyAdvancedExtenderImpl.java
index d764da2c..91d8171b 100644
--- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/BeautyAdvancedExtenderImpl.java
+++ b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/BeautyAdvancedExtenderImpl.java
@@ -16,6 +16,7 @@
package androidx.camera.extensions.impl.advanced;
+import android.annotation.SuppressLint;
import android.hardware.camera2.CameraCharacteristics;
import android.util.Range;
import android.util.Size;
@@ -30,7 +31,7 @@ import java.util.Map;
*
* @since 1.2
*/
-
+@SuppressLint("UnknownNullness")
public class BeautyAdvancedExtenderImpl implements AdvancedExtenderImpl {
public BeautyAdvancedExtenderImpl() {
}
diff --git a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/BokehAdvancedExtenderImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/BokehAdvancedExtenderImpl.java
index 594c0049..b05740d0 100644
--- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/BokehAdvancedExtenderImpl.java
+++ b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/BokehAdvancedExtenderImpl.java
@@ -16,6 +16,7 @@
package androidx.camera.extensions.impl.advanced;
+import android.annotation.SuppressLint;
import android.hardware.camera2.CameraCharacteristics;
import android.util.Range;
import android.util.Size;
@@ -30,6 +31,7 @@ import java.util.Map;
*
* @since 1.2
*/
+@SuppressLint("UnknownNullness")
public class BokehAdvancedExtenderImpl implements AdvancedExtenderImpl {
public BokehAdvancedExtenderImpl() {
}
diff --git a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/Camera2OutputConfigImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/Camera2OutputConfigImpl.java
index 7e109d94..68de01b6 100644
--- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/Camera2OutputConfigImpl.java
+++ b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/Camera2OutputConfigImpl.java
@@ -16,25 +16,16 @@
package androidx.camera.extensions.impl.advanced;
+import android.annotation.SuppressLint;
+
import java.util.List;
/**
* A config representing a {@link android.hardware.camera2.params.OutputConfiguration} where
* Surface will be created by the information in this config.
*/
+@SuppressLint("UnknownNullness")
public interface Camera2OutputConfigImpl {
- enum UsageType {
- USAGE_NOTSPECIFIED,
- USAGE_PREVIEW,
- USAGE_CAPTURE,
- USAGE_ANALYSIS
- }
-
- /**
- * Gets the usage type which could be USAGE_PREVIEW, USAGE_CAPTURE or USAGE_ANALYSIS.
- */
- UsageType getUsageType();
-
/**
* Gets thd id of this output config. The id can be used to identify the stream in vendor
* implementations.
diff --git a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/Camera2OutputConfigImplBuilder.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/Camera2OutputConfigImplBuilder.java
index 7e806437..1298d804 100644
--- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/Camera2OutputConfigImplBuilder.java
+++ b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/Camera2OutputConfigImplBuilder.java
@@ -16,6 +16,7 @@
package androidx.camera.extensions.impl.advanced;
+import android.annotation.SuppressLint;
import android.util.Size;
import android.view.Surface;
@@ -27,10 +28,10 @@ import java.util.concurrent.atomic.AtomicInteger;
* A builder implementation to help OEM build the {@link Camera2OutputConfigImpl} instance.
* Implementation will be provided in the stub.
*/
+@SuppressLint("UnknownNullness")
public class Camera2OutputConfigImplBuilder {
static AtomicInteger sLastId = new AtomicInteger(0);
private OutputConfigImplImpl mOutputConfig;
- private Camera2OutputConfigImpl.UsageType mUsageType;
private int mSurfaceGroupId;
private String mPhysicalCameraId;
private List<Camera2OutputConfigImpl> mSurfaceSharingConfigs;
@@ -100,15 +101,6 @@ public class Camera2OutputConfigImplBuilder {
}
/**
- * Sets the usage type.
- */
- public Camera2OutputConfigImplBuilder setUsageType(
- Camera2OutputConfigImpl.UsageType usageType) {
- mUsageType = usageType;
- return this;
- }
-
- /**
* Build a {@link Camera2OutputConfigImpl} instance.
*/
public Camera2OutputConfigImpl build() {
@@ -116,13 +108,11 @@ public class Camera2OutputConfigImplBuilder {
mOutputConfig.setPhysicalCameraId(mPhysicalCameraId);
mOutputConfig.setSurfaceGroup(mSurfaceGroupId);
mOutputConfig.setSurfaceSharingConfigs(mSurfaceSharingConfigs);
- mOutputConfig.setUsageType(mUsageType);
return mOutputConfig;
}
private static class OutputConfigImplImpl implements Camera2OutputConfigImpl {
private int mId;
- private UsageType mUsageType;
private int mSurfaceGroup;
private String mPhysicalCameraId;
private List<Camera2OutputConfigImpl> mSurfaceSharingConfigs;
@@ -131,16 +121,10 @@ public class Camera2OutputConfigImplBuilder {
mId = -1;
mSurfaceGroup = 0;
mPhysicalCameraId = null;
- mUsageType = UsageType.USAGE_NOTSPECIFIED;
mSurfaceSharingConfigs = null;
}
@Override
- public UsageType getUsageType() {
- return mUsageType;
- }
-
- @Override
public int getId() {
return mId;
}
@@ -164,10 +148,6 @@ public class Camera2OutputConfigImplBuilder {
mId = id;
}
- public void setUsageType(UsageType usageType) {
- mUsageType = usageType;
- }
-
public void setSurfaceGroup(int surfaceGroup) {
mSurfaceGroup = surfaceGroup;
}
diff --git a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/Camera2SessionConfigImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/Camera2SessionConfigImpl.java
index 347bc522..d1217177 100644
--- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/Camera2SessionConfigImpl.java
+++ b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/Camera2SessionConfigImpl.java
@@ -16,6 +16,7 @@
package androidx.camera.extensions.impl.advanced;
+import android.annotation.SuppressLint;
import android.hardware.camera2.CaptureRequest;
import java.util.List;
@@ -24,6 +25,7 @@ import java.util.Map;
/**
* A config representing a {@link android.hardware.camera2.params.SessionConfiguration}
*/
+@SuppressLint("UnknownNullness")
public interface Camera2SessionConfigImpl {
/**
* Returns all the {@link Camera2OutputConfigImpl}s that will be used to create
diff --git a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/Camera2SessionConfigImplBuilder.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/Camera2SessionConfigImplBuilder.java
index e12e092a..6c052d13 100644
--- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/Camera2SessionConfigImplBuilder.java
+++ b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/Camera2SessionConfigImplBuilder.java
@@ -17,6 +17,7 @@
package androidx.camera.extensions.impl.advanced;
+import android.annotation.SuppressLint;
import android.hardware.camera2.CameraDevice;
import android.hardware.camera2.CaptureRequest;
@@ -29,6 +30,7 @@ import java.util.Map;
* A builder implementation to help OEM build the {@link Camera2SessionConfigImpl} instance.
* Implementation will be provided in the stub.
*/
+@SuppressLint("UnknownNullness")
public class Camera2SessionConfigImplBuilder {
private int mSessionTemplateId = CameraDevice.TEMPLATE_PREVIEW;
Map<CaptureRequest.Key<?>, Object> mSessionParameters = new HashMap<>();
diff --git a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/HdrAdvancedExtenderImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/HdrAdvancedExtenderImpl.java
index 8cdc97e7..bfd8e9a5 100644
--- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/HdrAdvancedExtenderImpl.java
+++ b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/HdrAdvancedExtenderImpl.java
@@ -16,6 +16,7 @@
package androidx.camera.extensions.impl.advanced;
+import android.annotation.SuppressLint;
import android.hardware.camera2.CameraCharacteristics;
import android.util.Range;
import android.util.Size;
@@ -30,7 +31,7 @@ import java.util.Map;
*
* @since 1.2
*/
-
+@SuppressLint("UnknownNullness")
public class HdrAdvancedExtenderImpl implements AdvancedExtenderImpl {
public HdrAdvancedExtenderImpl() {
}
diff --git a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/ImageProcessorImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/ImageProcessorImpl.java
index 7bc43a60..ce17c4f7 100644
--- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/ImageProcessorImpl.java
+++ b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/ImageProcessorImpl.java
@@ -16,11 +16,14 @@
package androidx.camera.extensions.impl.advanced;
+import android.annotation.SuppressLint;
+
/**
* A interface to receive and process the upcoming next available Image.
*
* <p>Implemented by OEM.
*/
+@SuppressLint("UnknownNullness")
public interface ImageProcessorImpl {
/**
* The reference count will be decremented when this method returns. If an extension wants
@@ -36,10 +39,16 @@ public interface ImageProcessorImpl {
* @param timestampNs the timestamp in nanoseconds associated with this image
* @param imageReference A reference to the {@link android.media.Image} which might contain
* null if OEM close(decrement) the image too slowly
+ * @param physicalCameraId used to distinguish which physical camera id the image comes from
+ * when the output configuration is
+ * MultiResolutionImageReaderOutputConfigImpl. It is also set if
+ * physicalCameraId is set in other Camera2OutputConfigImpl types.
*
*/
void onNextImageAvailable(
int outputConfigId,
long timestampNs,
- ImageReferenceImpl imageReference);
+ ImageReferenceImpl imageReference,
+ String physicalCameraId
+ );
}
diff --git a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/ImageReaderOutputConfigImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/ImageReaderOutputConfigImpl.java
index 1c5873fb..ca4dcafa 100644
--- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/ImageReaderOutputConfigImpl.java
+++ b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/ImageReaderOutputConfigImpl.java
@@ -16,11 +16,13 @@
package androidx.camera.extensions.impl.advanced;
+import android.annotation.SuppressLint;
import android.util.Size;
/**
* Surface will be created by constructing a ImageReader.
*/
+@SuppressLint("UnknownNullness")
public interface ImageReaderOutputConfigImpl extends Camera2OutputConfigImpl {
/**
* Returns the size of the surface.
diff --git a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/ImageReferenceImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/ImageReferenceImpl.java
index d3530898..95f2c3b9 100644
--- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/ImageReferenceImpl.java
+++ b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/ImageReferenceImpl.java
@@ -16,6 +16,7 @@
package androidx.camera.extensions.impl.advanced;
+import android.annotation.SuppressLint;
import android.media.Image;
/**
@@ -25,6 +26,7 @@ import android.media.Image;
*
* <p>Implemented by Camera2/CameraX.
*/
+@SuppressLint("UnknownNullness")
public interface ImageReferenceImpl {
/**
diff --git a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/NightAdvancedExtenderImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/NightAdvancedExtenderImpl.java
index 72c887ff..fc052240 100644
--- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/NightAdvancedExtenderImpl.java
+++ b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/NightAdvancedExtenderImpl.java
@@ -16,6 +16,7 @@
package androidx.camera.extensions.impl.advanced;
+import android.annotation.SuppressLint;
import android.hardware.camera2.CameraCharacteristics;
import android.util.Range;
import android.util.Size;
@@ -30,7 +31,7 @@ import java.util.Map;
*
* @since 1.2
*/
-
+@SuppressLint("UnknownNullness")
public class NightAdvancedExtenderImpl implements AdvancedExtenderImpl {
public NightAdvancedExtenderImpl() {
}
diff --git a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/OutputSurfaceImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/OutputSurfaceImpl.java
index e42e85b3..f6920296 100644
--- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/OutputSurfaceImpl.java
+++ b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/OutputSurfaceImpl.java
@@ -16,12 +16,14 @@
package androidx.camera.extensions.impl.advanced;
+import android.annotation.SuppressLint;
import android.util.Size;
import android.view.Surface;
/**
* For specifying output surface of the extension.
*/
+@SuppressLint("UnknownNullness")
public interface OutputSurfaceImpl {
/**
* Gets the surface.
diff --git a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/RequestProcessorImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/RequestProcessorImpl.java
index 15af6a2b..01308f64 100644
--- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/RequestProcessorImpl.java
+++ b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/RequestProcessorImpl.java
@@ -16,6 +16,7 @@
package androidx.camera.extensions.impl.advanced;
+import android.annotation.SuppressLint;
import android.hardware.camera2.CaptureFailure;
import android.hardware.camera2.CaptureRequest;
import android.hardware.camera2.CaptureResult;
@@ -27,6 +28,7 @@ import java.util.Map;
/**
* A Interface to execute requests.
*/
+@SuppressLint("UnknownNullness")
public interface RequestProcessorImpl {
/**
* Sets a {@link ImageProcessorImpl} to receive {@link ImageReferenceImpl} to process.
diff --git a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/SessionProcessorImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/SessionProcessorImpl.java
index 7522a13c..9ac3eeb7 100644
--- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/SessionProcessorImpl.java
+++ b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/SessionProcessorImpl.java
@@ -16,6 +16,7 @@
package androidx.camera.extensions.impl.advanced;
+import android.annotation.SuppressLint;
import android.content.Context;
import android.hardware.camera2.CameraCharacteristics;
import android.hardware.camera2.CaptureRequest;
@@ -55,6 +56,7 @@ import java.util.Map;
* (6) {@link #deInitSession}: called when CameraCaptureSession is destroyed
* </pre>
*/
+@SuppressLint("UnknownNullness")
public interface SessionProcessorImpl {
/**
* Notify to start the session for the extension. This is where the use case is started and
diff --git a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/SurfaceOutputConfigImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/SurfaceOutputConfigImpl.java
index 54b4b2cb..7b8d83c1 100644
--- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/SurfaceOutputConfigImpl.java
+++ b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/SurfaceOutputConfigImpl.java
@@ -16,11 +16,13 @@
package androidx.camera.extensions.impl.advanced;
+import android.annotation.SuppressLint;
import android.view.Surface;
/**
* Use Surface directly to create the OutputConfiguration.
*/
+@SuppressLint("UnknownNullness")
public interface SurfaceOutputConfigImpl extends Camera2OutputConfigImpl {
/**
* Get the {@link Surface}. It'll return valid surface only when type is TYPE_SURFACE.