summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-05-21 12:36:16 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-05-21 12:36:16 +0000
commit3bdc55dc7cbed41af68685a0ab57eaad52644d01 (patch)
tree57f0811a370694699aefdb26bcee49e91e75aaad
parent9e75783b078344d8060c8450a7f26c1bd7730204 (diff)
parent241289d2faacf0a3fd6bf023e594b6aaaa6e104c (diff)
downloadex-android13-mainline-go-adservices-release.tar.gz
Snap for 8626064 from 241289d2faacf0a3fd6bf023e594b6aaaa6e104c to mainline-go-adservices-releaseaml_go_ads_330915100aml_go_ads_330915000aml_go_ads_330913000android13-mainline-go-adservices-release
Change-Id: I3c55e289306f302c6db28f70c2c7d74e3bedfdc9
-rwxr-xr-xcamera2/extensions/sample/src/java/androidx/camera/extensions/impl/AutoImageCaptureExtenderImpl.java4
-rwxr-xr-xcamera2/extensions/sample/src/java/androidx/camera/extensions/impl/BeautyImageCaptureExtenderImpl.java4
-rwxr-xr-xcamera2/extensions/sample/src/java/androidx/camera/extensions/impl/NightImageCaptureExtenderImpl.java4
-rwxr-xr-xcamera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/AutoImageCaptureExtenderImpl.java1
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/BokehImageCaptureExtenderImpl.java1
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/CaptureProcessorImpl.java11
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/ImageCaptureExtenderImpl.java48
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/PreviewImageProcessorImpl.java12
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/ProcessResultImpl.java2
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/AdvancedExtenderImpl.java35
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/Camera2OutputConfigImplBuilder.java4
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/Camera2SessionConfigImplBuilder.java1
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/RequestProcessorImpl.java9
-rw-r--r--camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/SessionProcessorImpl.java56
14 files changed, 112 insertions, 80 deletions
diff --git a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/AutoImageCaptureExtenderImpl.java b/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/AutoImageCaptureExtenderImpl.java
index 1ffd485a..8844461e 100755
--- a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/AutoImageCaptureExtenderImpl.java
+++ b/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/AutoImageCaptureExtenderImpl.java
@@ -244,11 +244,11 @@ public final class AutoImageCaptureExtenderImpl implements ImageCaptureExtenderI
@Override
public List<CaptureRequest.Key> getAvailableCaptureRequestKeys() {
- return null;
+ return new ArrayList<>();
}
@Override
public List<CaptureResult.Key> getAvailableCaptureResultKeys() {
- return null;
+ return new ArrayList<>();
}
}
diff --git a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/BeautyImageCaptureExtenderImpl.java b/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/BeautyImageCaptureExtenderImpl.java
index 1cef1732..21a3646a 100755
--- a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/BeautyImageCaptureExtenderImpl.java
+++ b/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/BeautyImageCaptureExtenderImpl.java
@@ -267,11 +267,11 @@ public final class BeautyImageCaptureExtenderImpl implements ImageCaptureExtende
@Override
public List<CaptureRequest.Key> getAvailableCaptureRequestKeys() {
- return null;
+ return new ArrayList<>();
}
@Override
public List<CaptureResult.Key> getAvailableCaptureResultKeys() {
- return null;
+ return new ArrayList<>();
}
}
diff --git a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/NightImageCaptureExtenderImpl.java b/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/NightImageCaptureExtenderImpl.java
index 07648923..f27f48e4 100755
--- a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/NightImageCaptureExtenderImpl.java
+++ b/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/NightImageCaptureExtenderImpl.java
@@ -244,11 +244,11 @@ public final class NightImageCaptureExtenderImpl implements ImageCaptureExtender
@Override
public List<CaptureRequest.Key> getAvailableCaptureRequestKeys() {
- return null;
+ return new ArrayList<>();
}
@Override
public List<CaptureResult.Key> getAvailableCaptureResultKeys() {
- return null;
+ return new ArrayList<>();
}
}
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 cbee0295..ccb0dacf 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
@@ -112,4 +112,5 @@ public final class AutoImageCaptureExtenderImpl implements ImageCaptureExtenderI
public List<CaptureResult.Key> getAvailableCaptureResultKeys() {
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 39bf7e5d..66c5839d 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
@@ -112,4 +112,5 @@ public final class BokehImageCaptureExtenderImpl implements ImageCaptureExtender
public List<CaptureResult.Key> getAvailableCaptureResultKeys() {
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 1c714736..3eee146a 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,23 +16,22 @@
package androidx.camera.extensions.impl;
+import android.annotation.SuppressLint;
import android.graphics.ImageFormat;
import android.hardware.camera2.TotalCaptureResult;
import android.media.Image;
import android.util.Pair;
import android.view.Surface;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
-import java.util.concurrent.Executor;
import java.util.Map;
+import java.util.concurrent.Executor;
/**
* The interface for processing a set of {@link Image}s that have captured.
*
* @since 1.0
*/
+@SuppressLint("UnknownNullness")
public interface CaptureProcessorImpl extends ProcessorImpl {
/**
* Process a set images captured that were requested.
@@ -57,11 +56,11 @@ public interface CaptureProcessorImpl extends ProcessorImpl {
* become invalid after this method completes, so no references to them
* should be kept.
* @param resultCallback Capture result callback to be called once the capture result
- * values are ready.
+ * values of the processed image are ready.
* @param executor The executor to run the callback on. If null then the callback will
* run on any arbitrary executor.
* @since 1.3
*/
void process(Map<Integer, Pair<Image, TotalCaptureResult>> results,
- @NonNull ProcessResultImpl resultCallback, @Nullable Executor executor);
+ ProcessResultImpl resultCallback, Executor executor);
}
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 2cf120f5..88bd105a 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
@@ -16,6 +16,7 @@
package androidx.camera.extensions.impl;
+import android.annotation.SuppressLint;
import android.graphics.ImageFormat;
import android.hardware.camera2.CameraCharacteristics;
import android.hardware.camera2.CaptureRequest;
@@ -24,8 +25,6 @@ import android.util.Pair;
import android.util.Range;
import android.util.Size;
-import androidx.annotation.Nullable;
-
import java.util.List;
/**
@@ -33,6 +32,7 @@ import java.util.List;
*
* @since 1.0
*/
+@SuppressLint("UnknownNullness")
public interface ImageCaptureExtenderImpl extends ExtenderStateListener {
/**
* Indicates whether the extension is supported on the device.
@@ -78,10 +78,10 @@ public interface ImageCaptureExtenderImpl extends ExtenderStateListener {
* returned list is not null, it will be used to find the best resolutions combination for
* the bound use cases.
*
- * @return the customized supported resolutions.
+ * @return the customized supported resolutions, or null to support all sizes retrieved from
+ * {@link android.hardware.camera2.params.StreamConfigurationMap}.
* @since 1.1
*/
- @Nullable
List<Pair<Integer, Size[]>> getSupportedResolutions();
/**
@@ -98,8 +98,7 @@ public interface ImageCaptureExtenderImpl extends ExtenderStateListener {
* null if no capture latency info can be provided.
* @since 1.2
*/
- @Nullable
- Range<Long> getEstimatedCaptureLatencyRange(@Nullable Size captureOutputSize);
+ Range<Long> getEstimatedCaptureLatencyRange(Size captureOutputSize);
/**
* Return a list of orthogonal capture request keys.
@@ -109,11 +108,37 @@ public interface ImageCaptureExtenderImpl extends ExtenderStateListener {
*
* <p>Do note that the list of keys applies to {@link PreviewExtenderImpl} as well.</p>
*
- * @return List of supported orthogonal capture keys, or
- * null if no capture settings are not supported.
+ * <p>Also note that the keys {@link CaptureRequest#JPEG_QUALITY} and
+ * {@link CaptureRequest#JPEG_ORIENTATION} are always supported regardless being added in the
+ * list or not. To support common camera operations like zoom, tap-to-focus, flash and
+ * exposure compensation, we recommend supporting the following keys if possible.
+ * <pre>
+ * zoom: {@link CaptureRequest#CONTROL_ZOOM_RATIO}
+ * {@link CaptureRequest#SCALER_CROP_REGION}
+ * tap-to-focus:
+ * {@link CaptureRequest#CONTROL_AF_MODE}
+ * {@link CaptureRequest#CONTROL_AF_TRIGGER}
+ * {@link CaptureRequest#CONTROL_AF_REGIONS}
+ * {@link CaptureRequest#CONTROL_AE_REGIONS}
+ * {@link CaptureRequest#CONTROL_AWB_REGIONS}
+ * flash:
+ * {@link CaptureRequest#CONTROL_AE_MODE}
+ * {@link CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER}
+ * {@link CaptureRequest#FLASH_MODE}
+ * exposure compensation:
+ * {@link CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION}
+ * </pre>
+ * On basic extensions that implement 1.2 or prior version, the above keys are all supported
+ * explicitly. When migrating from 1.2 or prior to 1.3, please note that both CameraX and
+ * Camera2 will honor the returned list and support only the keys contained in it. For
+ * example, if OEM decides to return only {@link CaptureRequest#CONTROL_ZOOM_RATIO} and
+ * {@link CaptureRequest#SCALER_CROP_REGION} in the 1.3 implementation, it means only zoom is
+ * supported for the app while tap-to-focus , flash and exposure compensation are not allowed.
+ *
+ * @return List of supported orthogonal capture keys, or an empty list if no capture settings
+ * are not supported.
* @since 1.3
*/
- @Nullable
List<CaptureRequest.Key> getAvailableCaptureRequestKeys();
/**
@@ -129,10 +154,9 @@ public interface ImageCaptureExtenderImpl extends ExtenderStateListener {
*
* <p>Do note that the list of keys applies to {@link PreviewExtenderImpl} as well.</p>
*
- * @return List of supported capture result keys, or
- * null if capture results are not supported.
+ * @return List of supported capture result keys, or an empty list if capture results are not
+ * supported.
* @since 1.3
*/
- @Nullable
List<CaptureResult.Key> getAvailableCaptureResultKeys();
}
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 f9a9777d..f203ebad 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,20 +16,20 @@
package androidx.camera.extensions.impl;
+import android.annotation.SuppressLint;
import android.graphics.ImageFormat;
import android.hardware.camera2.TotalCaptureResult;
import android.media.Image;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
import java.util.concurrent.Executor;
+
/**
* Processes a single {@link Image} and {@link TotalCaptureResult} to produce an output to a
* stream.
*
* @since 1.0
*/
+@SuppressLint("UnknownNullness")
public interface PreviewImageProcessorImpl extends ProcessorImpl {
/**
* Processes the requested image capture.
@@ -54,11 +54,11 @@ public interface PreviewImageProcessorImpl extends ProcessorImpl {
* kept.
* @param result The metadata associated with the image to process.
* @param resultCallback Capture result callback to be called once the capture result
- * values are ready.
+ * values of the processed image are ready.
* @param executor The executor to run the callback on. If null then the callback will
* run on any arbitrary executor.
* @since 1.3
*/
- void process(Image image, TotalCaptureResult result, @NonNull ProcessResultImpl resultCallback,
- @Nullable Executor executor);
+ void process(Image image, TotalCaptureResult result, ProcessResultImpl resultCallback,
+ Executor executor);
}
diff --git a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/ProcessResultImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/ProcessResultImpl.java
index d4c2014d..d0e3605d 100644
--- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/ProcessResultImpl.java
+++ b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/ProcessResultImpl.java
@@ -16,6 +16,7 @@
package androidx.camera.extensions.impl;
+import android.annotation.SuppressLint;
import android.hardware.camera2.CaptureResult;
import android.util.Pair;
@@ -26,6 +27,7 @@ import java.util.List;
*
* @since 1.3
*/
+@SuppressLint("UnknownNullness")
public interface ProcessResultImpl {
/**
* Capture result callback that needs to be called when the process capture results are
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 97c02c83..465bfe88 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
@@ -23,7 +23,6 @@ import android.hardware.camera2.CaptureResult;
import android.util.Range;
import android.util.Size;
-import androidx.annotation.NonNull;
import androidx.camera.extensions.impl.ExtensionVersionImpl;
import java.util.List;
@@ -128,7 +127,7 @@ public interface AdvancedExtenderImpl {
* Returns supported output sizes for Image Analysis (YUV_420_888 format).
*
* <p>OEM can optionally support a YUV surface for ImageAnalysis along with Preview/ImageCapture
- * output surfaces. If imageAnalysis YUV surface is not supported, OEM will return null or
+ * output surfaces. If imageAnalysis YUV surface is not supported, OEM should return null or
* empty list.
*/
List<Size> getSupportedYuvAnalysisResolutions(String cameraId);
@@ -140,23 +139,40 @@ public interface AdvancedExtenderImpl {
SessionProcessorImpl createSessionProcessor();
/**
- * Return a list of orthogonal capture request keys.
+ * Returns a list of orthogonal capture request keys.
*
* <p>Any keys included in the list will be configurable by clients of the extension and will
* affect the extension functionality.</p>
*
- * <p>If supported, then controls 'android.jpeg.quality' and 'android.jpeg.orientation' must
- * always be present in the supported list.</p>
+ * <p>Please note that the keys {@link CaptureRequest#JPEG_QUALITY} and
+ * {@link CaptureRequest#JPEG_ORIENTATION} are always supported regardless being added in the
+ * list or not. To support common camera operations like zoom, tap-to-focus, flash and
+ * exposure compensation, we recommend supporting the following keys if possible.
+ * <pre>
+ * zoom: {@link CaptureRequest#CONTROL_ZOOM_RATIO}
+ * {@link CaptureRequest#SCALER_CROP_REGION}
+ * tap-to-focus:
+ * {@link CaptureRequest#CONTROL_AF_MODE}
+ * {@link CaptureRequest#CONTROL_AF_TRIGGER}
+ * {@link CaptureRequest#CONTROL_AF_REGIONS}
+ * {@link CaptureRequest#CONTROL_AE_REGIONS}
+ * {@link CaptureRequest#CONTROL_AWB_REGIONS}
+ * flash:
+ * {@link CaptureRequest#CONTROL_AE_MODE}
+ * {@link CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER}
+ * {@link CaptureRequest#FLASH_MODE}
+ * exposure compensation:
+ * {@link CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION}
+ * </pre>
*
- * @return List of supported orthogonal capture keys, or
- * an empty list if no capture settings are not supported.
+ * @return List of supported orthogonal capture keys, or an empty list if no capture settings
+ * are not supported.
* @since 1.3
*/
- @NonNull
List<CaptureRequest.Key> getAvailableCaptureRequestKeys();
/**
- * Return a list of supported capture result keys.
+ * Returns a list of supported capture result keys.
*
* <p>Any keys included in this list must be available as part of the registered
* {@link SessionProcessorImpl.CaptureCallback#onCaptureCompleted} callback.</p>
@@ -168,6 +184,5 @@ public interface AdvancedExtenderImpl {
* an empty list if capture results are not supported.
* @since 1.3
*/
- @NonNull
List<CaptureResult.Key> getAvailableCaptureResultKeys();
}
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 1298d804..a66d3ceb 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
@@ -17,6 +17,7 @@
package androidx.camera.extensions.impl.advanced;
import android.annotation.SuppressLint;
+import android.hardware.camera2.params.OutputConfiguration;
import android.util.Size;
import android.view.Surface;
@@ -26,13 +27,12 @@ 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 int mSurfaceGroupId;
+ private int mSurfaceGroupId = OutputConfiguration.SURFACE_GROUP_ID_NONE;
private String mPhysicalCameraId;
private List<Camera2OutputConfigImpl> mSurfaceSharingConfigs;
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 6c052d13..a3011666 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
@@ -28,7 +28,6 @@ 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 {
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 e70ce37f..51853334 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
@@ -26,7 +26,7 @@ import java.util.List;
import java.util.Map;
/**
- * A Interface to execute requests.
+ * An Interface to execute Camera2 capture requests.
*/
@SuppressLint("UnknownNullness")
public interface RequestProcessorImpl {
@@ -38,24 +38,25 @@ public interface RequestProcessorImpl {
/**
* Submits a request.
* @return the id of the capture sequence or -1 in case the processor encounters a fatal error
- * or receives and invalid argument.
+ * or receives an invalid argument.
*/
int submit(Request request, Callback callback);
/**
* Submits a list of requests.
* @return the id of the capture sequence or -1 in case the processor encounters a fatal error
- * or receives and invalid argument.
+ * or receives an invalid argument.
*/
int submit(List<Request> requests, Callback callback);
/**
* Set repeating requests.
* @return the id of the capture sequence or -1 in case the processor encounters a fatal error
- * or receives and invalid argument.
+ * or receives an invalid argument.
*/
int setRepeating(Request request, Callback callback);
+
/**
* Abort captures.
*/
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 4ad05d8d..fabfc2bf 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
@@ -19,17 +19,18 @@ package androidx.camera.extensions.impl.advanced;
import android.annotation.SuppressLint;
import android.content.Context;
import android.hardware.camera2.CameraCharacteristics;
-import android.hardware.camera2.CaptureResult;
import android.hardware.camera2.CaptureRequest;
+import android.hardware.camera2.CaptureResult;
import android.view.Surface;
import java.util.Map;
/**
- * Interface for activating extension sessions.
+ * Interface for creating Camera2 CameraCaptureSessions with extension enabled based on
+ * advanced vendor implementation.
*
* <p><pre>
- * The flow of a extension session.
+ * The flow of a extension session is shown below:
* (1) {@link #initSession}: CameraX prepares streams configuration for creating
* CameraCaptureSession. Output surfaces for Preview, ImageCapture and ImageAnalysis are passed
* in and vendor is responsible for outputting the results to these surfaces.
@@ -39,43 +40,41 @@ import java.util.Map;
* single requests.
*
* (3) {@link #startRepeating}: CameraX will call this method to start the repeating request
- * after CameraCaptureSession is called. Vendor should start the repeating request by
- * {@link RequestProcessorImpl}. Vendor can also update the repeating request at other
- * time other than in this method.
+ * after CameraCaptureSession is called. Vendor should start the repeating request by
+ * {@link RequestProcessorImpl}. Vendor can also update the repeating request if needed later.
*
* (4) {@link #setParameters(Map)}: The passed parameters will be attached to the repeating request
* and single requests but vendor can choose to apply some of them only.
*
* (5) {@link #startCapture(CaptureCallback)}: It is called when apps want to
* start a multi-frame image capture. {@link CaptureCallback} will be called
- * to report the statue and the output image will be written to the capture output surface
+ * to report the status and the output image will be written to the capture output surface
* specified in {@link #initSession}.
*
* (5) {@link #onCaptureSessionEnd}: It is called right BEFORE CameraCaptureSession.close() is
* called.
*
- * (6) {@link #deInitSession}: called when CameraCaptureSession is destroyed
+ * (6) {@link #deInitSession}: called when CameraCaptureSession is closed.
* </pre>
*/
@SuppressLint("UnknownNullness")
public interface SessionProcessorImpl {
/**
- * Notify to start the session for the extension. This is where the use case is started and
- * would be able to allocate resources here. After onInit() is called, the camera ID,
+ * Initializes the session for the extension. This is where the OEMs allocate resources for
+ * preparing a CameraCaptureSession. After initSession() is called, the camera ID,
* cameraCharacteristics and context will not change until deInitSession() has been called.
*
* <p>CameraX specifies the output surface configurations for preview, image capture and image
* analysis[optional]. And OEM returns a {@link Camera2SessionConfigImpl} which consists of a
* list of {@link Camera2OutputConfigImpl} and session parameters. The
- * {@link Camera2SessionConfigImpl} will be used to configure the
- * CameraCaptureSession.
+ * {@link Camera2SessionConfigImpl} will be used to configure the CameraCaptureSession.
*
* <p>OEM is responsible for outputting correct camera images output to these output surfaces.
* OEM can have the following options to enable the output:
* <pre>
* (1) Add these output surfaces in CameraCaptureSession directly using
- * {@link Camera2OutputConfigImplBuilder#newSurfaceConfig(Surface)} }. Processing
- * may be done in HAL.
+ * {@link Camera2OutputConfigImplBuilder#newSurfaceConfig(Surface)} }. Processing is done in
+ * HAL.
*
* (2) Use surface sharing with other surface by calling
* {@link Camera2OutputConfigImplBuilder#addSurfaceSharingOutputConfig(Camera2OutputConfigImpl)}
@@ -86,13 +85,6 @@ public interface SessionProcessorImpl {
* {@link Camera2SessionConfigImpl}.
* </pre>
*
- * <p>To ensure the preview, image capture and image analysis are working properly, OEM is
- * responsible for setting corresponding {@link Camera2OutputConfigImpl.UsageType} in the
- * {@link Camera2OutputConfigImpl}. CameraX will examine if all usage types
- * (USAGE_PREVIEW/USAGE_CAPTURE/USAGE_ANALYSIS) can be found in the returned
- * {@link Camera2SessionConfigImpl} and throws an {@link IllegalArgumentException} if some
- * usage type is not found.
- *
* <p>{@link Camera2OutputConfigImplBuilder} and {@link Camera2SessionConfigImplBuilder}
* implementations are provided in the stub for OEM to construct the
* {@link Camera2OutputConfigImpl} and {@link Camera2SessionConfigImpl} instances.
@@ -102,8 +94,7 @@ public interface SessionProcessorImpl {
* @param imageAnalysisSurfaceConfig an optional output config for image analysis
* (YUV_420_888).
* @return a {@link Camera2SessionConfigImpl} consisting of a list of
- * {@link Camera2OutputConfigImpl}
- * and session parameters which will decide the
+ * {@link Camera2OutputConfigImpl} and session parameters which will decide the
* {@link android.hardware.camera2.params.SessionConfiguration} for configuring the
* CameraCaptureSession. Please note that the OutputConfiguration list may not be part of any
* supported or mandatory stream combination BUT OEM must ensure this list will always
@@ -118,10 +109,10 @@ public interface SessionProcessorImpl {
OutputSurfaceImpl imageAnalysisSurfaceConfig);
/**
- * Notify to de-initialize the extension. This callback will be invoked after unbind. After
- * onDeInit() was called, it is expected that the camera ID, cameraCharacteristics will
- * no longer hold and tear down any resources allocated for this extension. Aborts all pending
- * captures.
+ * Notify to de-initialize the extension. This callback will be invoked after
+ * CameraCaptureSession is closed. After onDeInit() was called, it is expected that the
+ * camera ID, cameraCharacteristics will no longer hold and tear down any resources allocated
+ * for this extension. Aborts all pending captures.
*/
void deInitSession();
@@ -166,7 +157,7 @@ public interface SessionProcessorImpl {
/**
* Starts the repeating request after CameraCaptureSession is called. Vendor should start the
* repeating request by {@link RequestProcessorImpl}. Vendor can also update the
- * repeating request at time other than in this method.
+ * repeating request when needed later.
*
* @param callback a callback to report the status.
* @return the id of the capture sequence.
@@ -175,10 +166,9 @@ public interface SessionProcessorImpl {
/**
* Stop the repeating request. To prevent OEM from not calling stopRepeating, CameraX will
- * first stop repeating of current CameraCaptureSession and call this API to signal OEM that
- * all repeating request should stopped and calling
- * {@link RequestProcessorImpl#setRepeating(RequestProcessorImpl.Request)} will simply do
- * nothing.
+ * first stop the repeating request of current CameraCaptureSession and call this API to signal
+ * OEM that the repeating request was stopped and going forward calling
+ * {@link RequestProcessorImpl#setRepeating} will simply do nothing.
*/
void stopRepeating();
@@ -198,7 +188,7 @@ public interface SessionProcessorImpl {
int startCapture(CaptureCallback callback);
/**
- * Abort capture tasks.
+ * Abort all capture tasks.
*/
void abortCapture(int captureSequenceId);