diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2021-06-14 18:29:34 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2021-06-14 18:29:34 +0000 |
commit | bd39a022721442d648986257ed2c274a076c34b9 (patch) | |
tree | b6abcb37f32b8814a5f4aa25a459d5301e26709e | |
parent | 24382da26383b1bbac9de5a6d3644276f7833141 (diff) | |
parent | ae681a09336919b4b081b89792f979482040a6b9 (diff) | |
download | ex-bd39a022721442d648986257ed2c274a076c34b9.tar.gz |
Merge "Camera: Sync camera extensions stubs" into sc-devandroid12-dev
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. |