diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-04-08 16:02:13 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-04-08 16:02:13 +0000 |
commit | eac4c3845a1aaa430dc27f2d4ef3a09776c4427f (patch) | |
tree | f5e7bad67e0fc27e4dfd3986148ec9782728063f | |
parent | 817b917b06a564b02cc0e9402e3f8ec243709cad (diff) | |
parent | 5050934c425fa1c775d31a1c2ab7bbe6f8fe5bc6 (diff) | |
download | ex-android12-mainline-tzdata2-release.tar.gz |
Snap for 8426163 from 5050934c425fa1c775d31a1c2ab7bbe6f8fe5bc6 to mainline-tzdata2-releaseandroid-mainline-12.0.0_r112aml_tz2_305400500aml_tz2_305400300aml_tz2_305400100aml_tz2_304500300aml_tz2_303900110aml_tz2_303900102aml_tz2_303800002aml_tz2_303800001aml_tz2_303200001android12-mainline-tzdata2-releaseaml_tz2_305400100
Change-Id: Icb91c8746a5be1baab0190c7042c056502714727
78 files changed, 6 insertions, 6697 deletions
diff --git a/camera2/extensions/README.android b/camera2/extensions/README.android deleted file mode 100644 index 8c1a70a8..00000000 --- a/camera2/extensions/README.android +++ /dev/null @@ -1,12 +0,0 @@ -Library Name: CameraX Extension stub and sample -License: Apache 2 -Description: The CameraX Extension stub library along with a very basic sample -implementation. The stub includes extension API versions 1.2.0, 1.1.0 and older. - -Local patches -------------- -- No changes to the stubs -- Minor modifications to the sample implementation switching effects to white balance modes -- The HDR preview processor doesn't use GL to render to the registered output surface instead - it will just attach the incoming image - diff --git a/camera2/extensions/sample/Android.bp b/camera2/extensions/sample/Android.bp deleted file mode 100644 index 70291751..00000000 --- a/camera2/extensions/sample/Android.bp +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (C) 2020 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package { - default_applicable_licenses: ["Android-Apache-2.0"], -} - -java_library { - name: "androidx.camera.extensions.impl", - installable: true, - - srcs: ["src/**/*.java"], - - sdk_version: "current", - vendor: true, -} - -prebuilt_etc { - name: "sample_camera_extensions.xml", - src: "camera_extensions.xml", - sub_dir: "permissions", - vendor: true, -} diff --git a/camera2/extensions/sample/camera_extensions.xml b/camera2/extensions/sample/camera_extensions.xml deleted file mode 100644 index 3f8c6378..00000000 --- a/camera2/extensions/sample/camera_extensions.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<permissions> - <library name="androidx.camera.extensions.impl" - file="/vendor/framework/androidx.camera.extensions.impl.jar"/> -</permissions> 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 deleted file mode 100755 index cabcaae0..00000000 --- a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/AutoImageCaptureExtenderImpl.java +++ /dev/null @@ -1,235 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package androidx.camera.extensions.impl; - -import android.content.Context; -import android.hardware.camera2.CameraCharacteristics; -import android.hardware.camera2.CaptureRequest; -import android.hardware.camera2.TotalCaptureResult; -import android.media.Image; -import android.media.ImageWriter; -import android.os.Build; -import android.util.Log; -import android.util.Pair; -import android.util.Size; -import android.view.Surface; - -import java.nio.ByteBuffer; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -/** - * Implementation for auto image capture use case. - * - * <p>This class should be implemented by OEM and deployed to the target devices. 3P developers - * don't need to implement this, unless this is used for related testing usage. - * - * @since 1.0 - * @hide - */ -public final class AutoImageCaptureExtenderImpl implements ImageCaptureExtenderImpl { - private static final String TAG = "AutoICExtender"; - private static final int DEFAULT_STAGE_ID = 0; - private static final int SESSION_STAGE_ID = 101; - private static final int MODE = CaptureRequest.CONTROL_AWB_MODE_DAYLIGHT; - - /** - * @hide - */ - public AutoImageCaptureExtenderImpl() { - } - - /** - * @hide - */ - @Override - public void init(String cameraId, CameraCharacteristics cameraCharacteristics) { - } - - /** - * @hide - */ - @Override - public boolean isExtensionAvailable(String cameraId, - CameraCharacteristics cameraCharacteristics) { - return false; - } - - public boolean isExtensionAvailableOriginal(String cameraId, - CameraCharacteristics cameraCharacteristics) { - // Requires API 23 for ImageWriter - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { - return false; - } - - if (cameraCharacteristics == null) { - return false; - } - - return CameraCharacteristicAvailability.isWBModeAvailable(cameraCharacteristics, MODE); - } - - /** - * @hide - */ - @Override - public List<CaptureStageImpl> getCaptureStages() { - // Placeholder set of CaptureRequest.Key values - SettableCaptureStage captureStage = new SettableCaptureStage(DEFAULT_STAGE_ID); - captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_AWB_MODE, MODE); - List<CaptureStageImpl> captureStages = new ArrayList<>(); - captureStages.add(captureStage); - return captureStages; - } - - /** - * @hide - */ - @Override - public CaptureProcessorImpl getCaptureProcessor() { - CaptureProcessorImpl captureProcessor = - new CaptureProcessorImpl() { - private ImageWriter mImageWriter; - - @Override - public void onOutputSurface(Surface surface, int imageFormat) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - mImageWriter = ImageWriter.newInstance(surface, 1); - } - } - - @Override - public void process(Map<Integer, Pair<Image, TotalCaptureResult>> results) { - Log.d(TAG, "Started auto CaptureProcessor"); - - Pair<Image, TotalCaptureResult> result = results.get(DEFAULT_STAGE_ID); - - if (result == null) { - Log.w(TAG, - "Unable to process since images does not contain all stages."); - return; - } else { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - Image image = mImageWriter.dequeueInputImage(); - - // Do processing here - ByteBuffer yByteBuffer = image.getPlanes()[0].getBuffer(); - ByteBuffer uByteBuffer = image.getPlanes()[2].getBuffer(); - ByteBuffer vByteBuffer = image.getPlanes()[1].getBuffer(); - - // Sample here just simply copy/paste the capture image result - yByteBuffer.put(result.first.getPlanes()[0].getBuffer()); - uByteBuffer.put(result.first.getPlanes()[2].getBuffer()); - vByteBuffer.put(result.first.getPlanes()[1].getBuffer()); - - mImageWriter.queueInputImage(image); - } - } - - // Close all input images - for (Pair<Image, TotalCaptureResult> imageDataPair : results.values()) { - imageDataPair.first.close(); - } - - Log.d(TAG, "Completed auto CaptureProcessor"); - } - - @Override - public void onResolutionUpdate(Size size) { - - } - - @Override - public void onImageFormatUpdate(int imageFormat) { - - } - }; - return captureProcessor; - } - - /** - * @hide - */ - @Override - public void onInit(String cameraId, CameraCharacteristics cameraCharacteristics, - Context context) { - - } - - /** - * @hide - */ - @Override - public void onDeInit() { - - } - - /** - * @hide - */ - @Override - public CaptureStageImpl onPresetSession() { - // Set the necessary CaptureRequest parameters via CaptureStage, here we use some - // placeholder set of CaptureRequest.Key values - SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID); - captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_AWB_MODE, MODE); - - return captureStage; - } - - /** - * @hide - */ - @Override - public CaptureStageImpl onEnableSession() { - // Set the necessary CaptureRequest parameters via CaptureStage, here we use some - // placeholder set of CaptureRequest.Key values - SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID); - captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_AWB_MODE, MODE); - - return captureStage; - } - - /** - * @hide - */ - @Override - public CaptureStageImpl onDisableSession() { - // Set the necessary CaptureRequest parameters via CaptureStage, here we use some - // placeholder set of CaptureRequest.Key values - SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID); - captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_AWB_MODE, MODE); - - return captureStage; - } - - /** - * @hide - */ - @Override - public int getMaxCaptureStage() { - return 3; - } - - /** - * @hide - */ - @Override - public List<Pair<Integer, Size[]>> getSupportedResolutions() { - return null; - } -} diff --git a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/AutoPreviewExtenderImpl.java b/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/AutoPreviewExtenderImpl.java deleted file mode 100755 index 5018df8a..00000000 --- a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/AutoPreviewExtenderImpl.java +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package androidx.camera.extensions.impl; - -import android.content.Context; -import android.hardware.camera2.CameraCharacteristics; -import android.hardware.camera2.CaptureRequest; -import android.util.Pair; -import android.util.Size; - -import java.util.List; - -/** - * Implementation for auto preview use case. - * - * <p>This class should be implemented by OEM and deployed to the target devices. 3P developers - * don't need to implement this, unless this is used for related testing usage. - * - * @since 1.0 - * @hide - */ -public final class AutoPreviewExtenderImpl implements PreviewExtenderImpl { - private static final int DEFAULT_STAGE_ID = 0; - private static final int SESSION_STAGE_ID = 101; - private static final int MODE = CaptureRequest.CONTROL_AWB_MODE_DAYLIGHT; - - /** - * @hide - */ - public AutoPreviewExtenderImpl() { - } - - /** - * @hide - */ - @Override - public void init(String cameraId, CameraCharacteristics cameraCharacteristics) { - } - - /** - * @hide - */ - @Override - public boolean isExtensionAvailable(String cameraId, - CameraCharacteristics cameraCharacteristics) { - return false; - } - - public boolean isExtensionAvailableOriginal(String cameraId, - CameraCharacteristics cameraCharacteristics) { - // Implement the logic to check whether the extension function is supported or not. - - if (cameraCharacteristics == null) { - return false; - } - - return CameraCharacteristicAvailability.isWBModeAvailable(cameraCharacteristics, MODE); - } - - /** - * @hide - */ - @Override - public CaptureStageImpl getCaptureStage() { - // Set the necessary CaptureRequest parameters via CaptureStage, here we use some - // placeholder set of CaptureRequest.Key values - SettableCaptureStage captureStage = new SettableCaptureStage(DEFAULT_STAGE_ID); - captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_AWB_MODE, MODE); - - return captureStage; - } - - /** - * @hide - */ - @Override - public ProcessorType getProcessorType() { - return ProcessorType.PROCESSOR_TYPE_REQUEST_UPDATE_ONLY; - } - - /** - * @hide - */ - @Override - public ProcessorImpl getProcessor() { - return RequestUpdateProcessorImpls.noUpdateProcessor(); - } - - /** - * @hide - */ - @Override - public List<Pair<Integer, Size[]>> getSupportedResolutions() { - return null; - } - - /** - * @hide - */ - @Override - public void onInit(String cameraId, CameraCharacteristics cameraCharacteristics, - Context context) { - - } - - /** - * @hide - */ - @Override - public void onDeInit() { - - } - - /** - * @hide - */ - @Override - public CaptureStageImpl onPresetSession() { - // Set the necessary CaptureRequest parameters via CaptureStage, here we use some - // placeholder set of CaptureRequest.Key values - SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID); - captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_AWB_MODE, MODE); - - return captureStage; - } - - /** - * @hide - */ - @Override - public CaptureStageImpl onEnableSession() { - // Set the necessary CaptureRequest parameters via CaptureStage, here we use some - // placeholder set of CaptureRequest.Key values - SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID); - captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_AWB_MODE, MODE); - - return captureStage; - } - - /** - * @hide - */ - @Override - public CaptureStageImpl onDisableSession() { - // Set the necessary CaptureRequest parameters via CaptureStage, here we use some - // placeholder set of CaptureRequest.Key values - SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID); - captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_AWB_MODE, MODE); - - return captureStage; - } -} 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 deleted file mode 100755 index 72973144..00000000 --- a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/BeautyImageCaptureExtenderImpl.java +++ /dev/null @@ -1,258 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package androidx.camera.extensions.impl; - -import android.content.Context; -import android.graphics.ImageFormat; -import android.hardware.camera2.CameraCharacteristics; -import android.hardware.camera2.CaptureRequest; -import android.hardware.camera2.TotalCaptureResult; -import android.hardware.camera2.params.StreamConfigurationMap; -import android.media.Image; -import android.media.ImageWriter; -import android.os.Build; -import android.util.Log; -import android.util.Pair; -import android.util.Size; -import android.view.Surface; - -import java.nio.ByteBuffer; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -/** - * Implementation for beauty image capture use case. - * - * <p>This class should be implemented by OEM and deployed to the target devices. 3P developers - * don't need to implement this, unless this is used for related testing usage. - * - * @since 1.0 - * @hide - */ -public final class BeautyImageCaptureExtenderImpl implements ImageCaptureExtenderImpl { - private static final String TAG = "BeautyICExtender"; - private static final int DEFAULT_STAGE_ID = 0; - private static final int SESSION_STAGE_ID = 101; - private static final int MODE = CaptureRequest.CONTROL_AWB_MODE_TWILIGHT; - - private CameraCharacteristics mCameraCharacteristics; - - public BeautyImageCaptureExtenderImpl() { - } - - /** - * @hide - */ - @Override - public void init(String cameraId, CameraCharacteristics cameraCharacteristics) { - mCameraCharacteristics = cameraCharacteristics; - } - - /** - * @hide - */ - @Override - public boolean isExtensionAvailable(String cameraId, - CameraCharacteristics cameraCharacteristics) { - return false; - } - - public boolean isExtensionAvailableOriginal(String cameraId, - CameraCharacteristics cameraCharacteristics) { - // Requires API 23 for ImageWriter - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { - return false; - } - - if (cameraCharacteristics == null) { - return false; - } - - return CameraCharacteristicAvailability.isWBModeAvailable(cameraCharacteristics, MODE); - } - - /** - * @hide - */ - @Override - public List<CaptureStageImpl> getCaptureStages() { - // Placeholder set of CaptureRequest.Key values - SettableCaptureStage captureStage = new SettableCaptureStage(DEFAULT_STAGE_ID); - captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_AWB_MODE, MODE); - List<CaptureStageImpl> captureStages = new ArrayList<>(); - captureStages.add(captureStage); - return captureStages; - } - - /** - * @hide - */ - @Override - public CaptureProcessorImpl getCaptureProcessor() { - CaptureProcessorImpl captureProcessor = - new CaptureProcessorImpl() { - private ImageWriter mImageWriter; - - @Override - public void onOutputSurface(Surface surface, int imageFormat) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - mImageWriter = ImageWriter.newInstance(surface, 1); - } - } - - @Override - public void process(Map<Integer, Pair<Image, TotalCaptureResult>> results) { - Log.d(TAG, "Started beauty CaptureProcessor"); - - Pair<Image, TotalCaptureResult> result = results.get(DEFAULT_STAGE_ID); - - if (result == null) { - Log.w(TAG, - "Unable to process since images does not contain all stages."); - return; - } else { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - Image image = mImageWriter.dequeueInputImage(); - - // Do processing here - ByteBuffer yByteBuffer = image.getPlanes()[0].getBuffer(); - ByteBuffer uByteBuffer = image.getPlanes()[2].getBuffer(); - ByteBuffer vByteBuffer = image.getPlanes()[1].getBuffer(); - - // Sample here just simply copy/paste the capture image result - yByteBuffer.put(result.first.getPlanes()[0].getBuffer()); - uByteBuffer.put(result.first.getPlanes()[2].getBuffer()); - vByteBuffer.put(result.first.getPlanes()[1].getBuffer()); - - mImageWriter.queueInputImage(image); - } - } - - // Close all input images - for (Pair<Image, TotalCaptureResult> imageDataPair : results.values()) { - imageDataPair.first.close(); - } - - Log.d(TAG, "Completed beauty CaptureProcessor"); - } - - @Override - public void onResolutionUpdate(Size size) { - - } - - @Override - public void onImageFormatUpdate(int imageFormat) { - - } - }; - return captureProcessor; - } - - /** - * @hide - */ - @Override - public void onInit(String cameraId, CameraCharacteristics cameraCharacteristics, - Context context) { - - } - - /** - * @hide - */ - @Override - public void onDeInit() { - - } - - /** - * @hide - */ - @Override - public CaptureStageImpl onPresetSession() { - // Set the necessary CaptureRequest parameters via CaptureStage, here we use some - // placeholder set of CaptureRequest.Key values - SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID); - captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_AWB_MODE, MODE); - - return captureStage; - } - - /** - * @hide - */ - @Override - public CaptureStageImpl onEnableSession() { - // Set the necessary CaptureRequest parameters via CaptureStage, here we use some - // placeholder set of CaptureRequest.Key values - SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID); - captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_AWB_MODE, MODE); - - return captureStage; - } - - /** - * @hide - */ - @Override - public CaptureStageImpl onDisableSession() { - // Set the necessary CaptureRequest parameters via CaptureStage, here we use some - // placeholder set of CaptureRequest.Key values - SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID); - captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_AWB_MODE, MODE); - - return captureStage; - } - - /** - * @hide - */ - @Override - public int getMaxCaptureStage() { - return 3; - } - - /** - * @hide - */ - @Override - public List<Pair<Integer, Size[]>> getSupportedResolutions() { - List<Pair<Integer, Size[]>> formatResolutionsPairList = new ArrayList<>(); - - StreamConfigurationMap map = - mCameraCharacteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP); - - if (map != null) { - // The sample implementation only retrieves originally supported resolutions from - // CameraCharacteristics for JPEG and YUV_420_888 formats to return. - Size[] outputSizes = map.getOutputSizes(ImageFormat.JPEG); - - if (outputSizes != null) { - formatResolutionsPairList.add(Pair.create(ImageFormat.JPEG, outputSizes)); - } - - outputSizes = map.getOutputSizes(ImageFormat.YUV_420_888); - - if (outputSizes != null) { - formatResolutionsPairList.add(Pair.create(ImageFormat.YUV_420_888, outputSizes)); - } - } - - return formatResolutionsPairList; - } -} diff --git a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/BeautyPreviewExtenderImpl.java b/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/BeautyPreviewExtenderImpl.java deleted file mode 100755 index fcc78d55..00000000 --- a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/BeautyPreviewExtenderImpl.java +++ /dev/null @@ -1,186 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package androidx.camera.extensions.impl; - -import android.content.Context; -import android.graphics.ImageFormat; -import android.hardware.camera2.CameraCharacteristics; -import android.hardware.camera2.CaptureRequest; -import android.hardware.camera2.params.StreamConfigurationMap; -import android.util.Pair; -import android.util.Size; - -import java.util.ArrayList; -import java.util.List; - -/** - * Implementation for beauty preview use case. - * - * <p>This class should be implemented by OEM and deployed to the target devices. 3P developers - * don't need to implement this, unless this is used for related testing usage. - * - * @since 1.0 - * @hide - */ -public final class BeautyPreviewExtenderImpl implements PreviewExtenderImpl { - private static final int DEFAULT_STAGE_ID = 0; - private static final int SESSION_STAGE_ID = 101; - private static final int MODE = CaptureRequest.CONTROL_AWB_MODE_TWILIGHT; - - /** - * @hide - */ - private CameraCharacteristics mCameraCharacteristics; - - /** - * @hide - */ - public BeautyPreviewExtenderImpl() { - } - - @Override - public void init(String cameraId, CameraCharacteristics cameraCharacteristics) { - mCameraCharacteristics = cameraCharacteristics; - } - - /** - * @hide - */ - @Override - public boolean isExtensionAvailable(String cameraId, - CameraCharacteristics cameraCharacteristics) { - return false; - } - - public boolean isExtensionAvailableOriginal(String cameraId, - CameraCharacteristics cameraCharacteristics) { - // Implement the logic to check whether the extension function is supported or not. - - if (cameraCharacteristics == null) { - return false; - } - - return CameraCharacteristicAvailability.isWBModeAvailable(cameraCharacteristics, MODE); - } - - /** - * @hide - */ - @Override - public CaptureStageImpl getCaptureStage() { - // Set the necessary CaptureRequest parameters via CaptureStage, here we use some - // placeholder set of CaptureRequest.Key values - SettableCaptureStage captureStage = new SettableCaptureStage(DEFAULT_STAGE_ID); - captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_AWB_MODE, MODE); - - return captureStage; - } - - /** - * @hide - */ - @Override - public ProcessorType getProcessorType() { - return ProcessorType.PROCESSOR_TYPE_REQUEST_UPDATE_ONLY; - } - - /** - * @hide - */ - @Override - public ProcessorImpl getProcessor() { - return RequestUpdateProcessorImpls.noUpdateProcessor(); - } - - /** - * @hide - */ - @Override - public List<Pair<Integer, Size[]>> getSupportedResolutions() { - List<Pair<Integer, Size[]>> formatResolutionsPairList = new ArrayList<>(); - - StreamConfigurationMap map = - mCameraCharacteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP); - - if (map != null) { - // The sample implementation only retrieves originally supported resolutions from - // CameraCharacteristics for PRIVATE format to return. - Size[] outputSizes = map.getOutputSizes(ImageFormat.PRIVATE); - - if (outputSizes != null) { - formatResolutionsPairList.add(Pair.create(ImageFormat.PRIVATE, outputSizes)); - } - } - - return formatResolutionsPairList; - } - - /** - * @hide - */ - @Override - public void onInit(String cameraId, CameraCharacteristics cameraCharacteristics, - Context context) { - - } - - /** - * @hide - */ - @Override - public void onDeInit() { - - } - - /** - * @hide - */ - @Override - public CaptureStageImpl onPresetSession() { - // Set the necessary CaptureRequest parameters via CaptureStage, here we use some - // placeholder set of CaptureRequest.Key values - SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID); - captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_AWB_MODE, MODE); - - return captureStage; - } - - /** - * @hide - */ - @Override - public CaptureStageImpl onEnableSession() { - // Set the necessary CaptureRequest parameters via CaptureStage, here we use some - // placeholder set of CaptureRequest.Key values - SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID); - captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_AWB_MODE, MODE); - - return captureStage; - } - - /** - * @hide - */ - @Override - public CaptureStageImpl onDisableSession() { - // Set the necessary CaptureRequest parameters via CaptureStage, here we use some - // placeholder set of CaptureRequest.Key values - SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID); - captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_AWB_MODE, MODE); - - return captureStage; - } -} diff --git a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/BokehImageCaptureExtenderImpl.java b/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/BokehImageCaptureExtenderImpl.java deleted file mode 100644 index db574615..00000000 --- a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/BokehImageCaptureExtenderImpl.java +++ /dev/null @@ -1,232 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package androidx.camera.extensions.impl; - -import android.content.Context; -import android.hardware.camera2.CameraCharacteristics; -import android.hardware.camera2.CaptureRequest; -import android.hardware.camera2.TotalCaptureResult; -import android.media.Image; -import android.media.ImageWriter; -import android.os.Build; -import android.util.Log; -import android.util.Pair; -import android.util.Size; -import android.view.Surface; - -import java.nio.ByteBuffer; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -/** - * Implementation for bokeh image capture use case. - * - * <p>This class should be implemented by OEM and deployed to the target devices. 3P developers - * don't need to implement this, unless this is used for related testing usage. - * - * @since 1.0 - * @hide - */ -public final class BokehImageCaptureExtenderImpl implements ImageCaptureExtenderImpl { - private static final String TAG = "BokehICExtender"; - private static final int DEFAULT_STAGE_ID = 0; - private static final int SESSION_STAGE_ID = 101; - private static final int MODE = CaptureRequest.CONTROL_AWB_MODE_SHADE; - - /** - * @hide - */ - public BokehImageCaptureExtenderImpl() { - } - - /** - * @hide - */ - @Override - public void init(String cameraId, CameraCharacteristics cameraCharacteristics) { - } - - /** - * @hide - */ - @Override - public boolean isExtensionAvailable(String cameraId, - CameraCharacteristics cameraCharacteristics) { - // Requires API 23 for ImageWriter - if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.M) { - return false; - } - - if (cameraCharacteristics == null) { - return false; - } - - return CameraCharacteristicAvailability.isWBModeAvailable(cameraCharacteristics, MODE); - } - - /** - * @hide - */ - @Override - public List<CaptureStageImpl> getCaptureStages() { - // Placeholder set of CaptureRequest.Key values - SettableCaptureStage captureStage = new SettableCaptureStage(DEFAULT_STAGE_ID); - captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_AWB_MODE, MODE); - List<CaptureStageImpl> captureStages = new ArrayList<>(); - captureStages.add(captureStage); - return captureStages; - } - - /** - * @hide - */ - @Override - public CaptureProcessorImpl getCaptureProcessor() { - CaptureProcessorImpl captureProcessor = - new CaptureProcessorImpl() { - private ImageWriter mImageWriter; - - @Override - public void onOutputSurface(Surface surface, int imageFormat) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - mImageWriter = ImageWriter.newInstance(surface, 1); - } - } - - @Override - public void process(Map<Integer, Pair<Image, TotalCaptureResult>> results) { - Log.d(TAG, "Started bokeh CaptureProcessor"); - - Pair<Image, TotalCaptureResult> result = results.get(DEFAULT_STAGE_ID); - - if (result == null) { - Log.w(TAG, - "Unable to process since images does not contain all stages."); - return; - } else { - if (android.os.Build.VERSION.SDK_INT - >= android.os.Build.VERSION_CODES.M) { - Image image = mImageWriter.dequeueInputImage(); - - // Do processing here - ByteBuffer yByteBuffer = image.getPlanes()[0].getBuffer(); - ByteBuffer uByteBuffer = image.getPlanes()[2].getBuffer(); - ByteBuffer vByteBuffer = image.getPlanes()[1].getBuffer(); - - // Sample here just simply copy/paste the capture image result - yByteBuffer.put(result.first.getPlanes()[0].getBuffer()); - uByteBuffer.put(result.first.getPlanes()[2].getBuffer()); - vByteBuffer.put(result.first.getPlanes()[1].getBuffer()); - - mImageWriter.queueInputImage(image); - } - } - - // Close all input images - for (Pair<Image, TotalCaptureResult> imageDataPair : results.values()) { - imageDataPair.first.close(); - } - - Log.d(TAG, "Completed bokeh CaptureProcessor"); - } - - @Override - public void onResolutionUpdate(Size size) { - - } - - @Override - public void onImageFormatUpdate(int imageFormat) { - - } - }; - return captureProcessor; - } - - /** - * @hide - */ - @Override - public void onInit(String cameraId, CameraCharacteristics cameraCharacteristics, - Context context) { - - } - - /** - * @hide - */ - @Override - public void onDeInit() { - - } - - /** - * @hide - */ - @Override - public CaptureStageImpl onPresetSession() { - // Set the necessary CaptureRequest parameters via CaptureStage, here we use some - // placeholder set of CaptureRequest.Key values - SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID); - captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_AWB_MODE, MODE); - - return captureStage; - } - - /** - * @hide - */ - @Override - public CaptureStageImpl onEnableSession() { - // Set the necessary CaptureRequest parameters via CaptureStage, here we use some - // placeholder set of CaptureRequest.Key values - SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID); - captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_AWB_MODE, MODE); - - return captureStage; - } - - /** - * @hide - */ - @Override - public CaptureStageImpl onDisableSession() { - // Set the necessary CaptureRequest parameters via CaptureStage, here we use some - // placeholder set of CaptureRequest.Key values - SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID); - captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_AWB_MODE, MODE); - - return captureStage; - } - - /** - * @hide - */ - @Override - public int getMaxCaptureStage() { - return 3; - } - - /** - * @hide - */ - @Override - public List<Pair<Integer, Size[]>> getSupportedResolutions() { - return null; - } - -} diff --git a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/BokehPreviewExtenderImpl.java b/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/BokehPreviewExtenderImpl.java deleted file mode 100644 index 8c43d345..00000000 --- a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/BokehPreviewExtenderImpl.java +++ /dev/null @@ -1,204 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package androidx.camera.extensions.impl; - -import android.content.Context; -import android.hardware.camera2.CameraCharacteristics; -import android.hardware.camera2.CaptureRequest; -import android.hardware.camera2.TotalCaptureResult; -import android.util.Pair; -import android.util.Size; -import android.view.Surface; - -import java.util.List; - -/** - * Implementation for bokeh preview use case. - * - * <p>This class should be implemented by OEM and deployed to the target devices. 3P developers - * don't need to implement this, unless this is used for related testing usage. - * - * @since 1.0 - * @hide - */ -public final class BokehPreviewExtenderImpl implements PreviewExtenderImpl { - private static final int DEFAULT_STAGE_ID = 0; - private static final int SESSION_STAGE_ID = 101; - private static final int MODE = CaptureRequest.CONTROL_AWB_MODE_SHADE; - - SettableCaptureStage mCaptureStage; - - /** - * @hide - */ - public BokehPreviewExtenderImpl() {} - - /** - * @hide - */ - @Override - public void init(String cameraId, CameraCharacteristics cameraCharacteristics) { - mCaptureStage = new SettableCaptureStage(DEFAULT_STAGE_ID); - mCaptureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_AWB_MODE, - CaptureRequest.CONTROL_AWB_MODE_AUTO); - } - - /** - * @hide - */ - @Override - public boolean isExtensionAvailable(String cameraId, - CameraCharacteristics cameraCharacteristics) { - // Implement the logic to check whether the extension function is supported or not. - - if (cameraCharacteristics == null) { - return false; - } - - return CameraCharacteristicAvailability.isWBModeAvailable(cameraCharacteristics, MODE); - } - - /** - * @hide - */ - @Override - public CaptureStageImpl getCaptureStage() { - return mCaptureStage; - } - - /** - * @hide - */ - @Override - public ProcessorType getProcessorType() { - return ProcessorType.PROCESSOR_TYPE_REQUEST_UPDATE_ONLY; - } - - /** - * @hide - */ - // Switches effect every 90 frames - private RequestUpdateProcessorImpl mRequestUpdateProcessor = new RequestUpdateProcessorImpl() { - private int mFrameCount = 0; - private Integer mWBMode = CaptureRequest.CONTROL_AWB_MODE_AUTO; - - @Override - public CaptureStageImpl process(TotalCaptureResult result) { - mFrameCount++; - if (mFrameCount % 90 == 0) { - mCaptureStage = new SettableCaptureStage(DEFAULT_STAGE_ID); - switch (mWBMode) { - case CaptureRequest.CONTROL_AWB_MODE_AUTO: - mWBMode = MODE; - break; - case MODE: - mWBMode = CaptureRequest.CONTROL_AWB_MODE_AUTO; - break; - default: - } - mCaptureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_AWB_MODE, - mWBMode); - mFrameCount = 0; - - return mCaptureStage; - } - - return null; - } - - @Override - public void onOutputSurface(Surface surface, int imageFormat) {} - - @Override - public void onResolutionUpdate(Size size) {} - - @Override - public void onImageFormatUpdate(int imageFormat) {} - }; - - - /** - * @hide - */ - @Override - public ProcessorImpl getProcessor() { - return mRequestUpdateProcessor; - } - - /** - * @hide - */ - @Override - public List<Pair<Integer, Size[]>> getSupportedResolutions() { - return null; - } - - /** - * @hide - */ - @Override - public void onInit(String cameraId, CameraCharacteristics cameraCharacteristics, - Context context) { - - } - - /** - * @hide - */ - @Override - public void onDeInit() { - - } - - /** - * @hide - */ - @Override - public CaptureStageImpl onPresetSession() { - // Set the necessary CaptureRequest parameters via CaptureStage, here we use some - // placeholder set of CaptureRequest.Key values - SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID); - captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_AWB_MODE, MODE); - - return captureStage; - } - - /** - * @hide - */ - @Override - public CaptureStageImpl onEnableSession() { - // Set the necessary CaptureRequest parameters via CaptureStage, here we use some - // placeholder set of CaptureRequest.Key values - SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID); - captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_AWB_MODE, MODE); - - return captureStage; - } - - /** - * @hide - */ - @Override - public CaptureStageImpl onDisableSession() { - // Set the necessary CaptureRequest parameters via CaptureStage, here we use some - // placeholder set of CaptureRequest.Key values - SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID); - captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_AWB_MODE, MODE); - - return captureStage; - } -} diff --git a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/CameraCharacteristicAvailability.java b/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/CameraCharacteristicAvailability.java deleted file mode 100644 index 0b51c7c5..00000000 --- a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/CameraCharacteristicAvailability.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright 2020 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl; - -import android.hardware.camera2.CameraCharacteristics; -import android.util.Log; - -import java.util.Arrays; - -/** - * A utility class to check the availabilities of camera characteristics. - */ -final class CameraCharacteristicAvailability { - private static final String TAG = "CharacteristicAbility"; - - private CameraCharacteristicAvailability() { - } - - /** - * Check if the given white balance mode id is available in the camera characteristics. - * - * @param cameraCharacteristics the camera characteristics. - * @param mode white balance mode id. - * @return {@code true} if the given white balance mode id is available in the camera - * characteristics. - * {@code false} otherwise. - */ - static boolean isWBModeAvailable(CameraCharacteristics cameraCharacteristics, - int mode) { - int[] availableModes = cameraCharacteristics.get( - CameraCharacteristics.CONTROL_AWB_AVAILABLE_MODES); - if (availableModes == null) { - Log.d(TAG, "No CONTROL_AWB_AVAILABLE_MODES info"); - return false; - } - - for (int availableMode : availableModes) { - if (availableMode == mode) { - return true; - } - } - Log.d(TAG, "wb mode: " + mode + " is not in available list " - + Arrays.toString(availableModes)); - return false; - } - - /** - * Check if the given effect id is available in the camera characteristics. - * - * @param cameraCharacteristics the camera characteristics. - * @param effect the effect id. - * @return {@code true} if the given effect id is available in the camera characteristics. - * {@code false} otherwise. - */ - static boolean isEffectAvailable(CameraCharacteristics cameraCharacteristics, - int effect) { - int[] availableEffects = cameraCharacteristics.get( - CameraCharacteristics.CONTROL_AVAILABLE_EFFECTS); - if (availableEffects == null) { - Log.d(TAG, "No CONTROL_AVAILABLE_EFFECTS info"); - return false; - } - - for (int availableEffect : availableEffects) { - if (availableEffect == effect) { - return true; - } - } - Log.d(TAG, "effect: " + effect + " is not in available list " - + Arrays.toString(availableEffects)); - return false; - } -} diff --git a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/CaptureProcessorImpl.java b/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/CaptureProcessorImpl.java deleted file mode 100644 index 1a257e21..00000000 --- a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/CaptureProcessorImpl.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl; - -import android.hardware.camera2.TotalCaptureResult; -import android.media.Image; -import android.util.Pair; -import android.util.Size; -import android.view.Surface; - -import java.util.Map; - -/** - * The interface for processing a set of {@link Image}s that have captured. - * - * @since 1.0 - * @hide - */ -public interface CaptureProcessorImpl { - /** - * This gets called to update where the CaptureProcessor should write the output of {@link - * #process(Map)}. - * - * @param surface The {@link Surface} that the CaptureProcessor should write data into. - * @param imageFormat The format of that the surface expects. - * @hide - */ - void onOutputSurface(Surface surface, int imageFormat); - - /** - * Process a set images captured that were requested. - * - * <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. - * @hide - */ - void process(Map<Integer, Pair<Image, TotalCaptureResult>> results); - - /** - * This callback will be invoked when CameraX changes the configured input resolution. After - * this call, {@link CaptureProcessorImpl} should expect any {@link Image} received as input - * to be at the specified resolution. - * - * @param size for the surface. - * @hide - */ - void onResolutionUpdate(Size size); - - /** - * This callback will be invoked when CameraX changes the configured input image format. - * After this call, {@link CaptureProcessorImpl} should expect any {@link Image} received as - * input to have the specified image format. - * - * @param imageFormat for the surface. - * @hide - */ - void onImageFormatUpdate(int imageFormat); -} diff --git a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/CaptureStageImpl.java b/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/CaptureStageImpl.java deleted file mode 100644 index 268a49da..00000000 --- a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/CaptureStageImpl.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl; - -import android.hardware.camera2.CaptureRequest; -import android.util.Pair; - -import java.util.List; - -/** - * The set of parameters that defines a single capture that will be sent to the camera. - * - * @since 1.0 - * @hide - */ -public interface CaptureStageImpl { - /** Returns the identifier for the {@link CaptureStageImpl}. */ - /** - * @hide - */ - int getId(); - - /** - * Returns the set of {@link CaptureRequest.Key} and the corresponding values that will be - * set for a single {@link CaptureRequest}. - */ - /** - * @hide - */ - List<Pair<CaptureRequest.Key, Object>> getParameters(); -} diff --git a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/ExtenderStateListener.java b/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/ExtenderStateListener.java deleted file mode 100644 index f926cff9..00000000 --- a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/ExtenderStateListener.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl; - -import android.content.Context; -import android.hardware.camera2.CameraCharacteristics; -import android.hardware.camera2.CameraDevice; -import android.hardware.camera2.CaptureRequest; - -/** - * Provides interfaces that the OEM needs to implement to handle the state change. - * - * @since 1.0 - * @hide - */ -public interface ExtenderStateListener { - - /** - * Notify to initialize the extension. This will be called after bindToLifeCycle. This is - * where the use case is started and would be able to allocate resources here. After onInit() is - * called, the camera ID, cameraCharacteristics and context will not change until onDeInit() - * has been called. - * - * @param cameraId The camera2 id string of the camera. - * @param cameraCharacteristics The {@link CameraCharacteristics} of the camera. - * @param context The {@link Context} used for CameraX. - * @hide - */ - void onInit(String cameraId, CameraCharacteristics cameraCharacteristics, Context context); - - /** - * 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, this should be where to clear all resources allocated for this use case. - * @hide - */ - void onDeInit(); - - /** - * 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. - * - * @return The request information to set the session wide camera parameters. - * @hide - */ - CaptureStageImpl onPresetSession(); - - /** - * This will be invoked once after the {@link android.hardware.camera2.CameraCaptureSession} - * has been created. The {@link CaptureRequest} parameters returned via - * {@link CaptureStageImpl} will be used to generate a single request to the current - * configured {@link CameraDevice}. The generated request will be submitted to camera before - * processing other single requests. - * - * @return The request information to create a single capture request to camera device. - * @hide - */ - CaptureStageImpl onEnableSession(); - - /** - * This will be invoked before the {@link android.hardware.camera2.CameraCaptureSession} is - * closed. The {@link CaptureRequest} parameters returned via {@link CaptureStageImpl} will - * be used to generate a single request to the currently configured {@link CameraDevice}. The - * generated request will be submitted to camera before the CameraCaptureSession is closed. - * - * @return The request information to customize the session. - * @hide - */ - CaptureStageImpl onDisableSession(); -} diff --git a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/ExtensionVersionImpl.java b/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/ExtensionVersionImpl.java deleted file mode 100644 index 76cc2c41..00000000 --- a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/ExtensionVersionImpl.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl; - -import android.util.Log; - -/** - * Implementation for extension version check. - * - * <p>This class should be implemented by OEM and deployed to the target devices. 3P developers - * don't need to implement this, unless this is used for related testing usage. - * - * @since 1.0 - * @hide - */ -public class ExtensionVersionImpl { - private static final String TAG = "ExtenderVersionImpl"; - private static final String VERSION = "1.1.0"; - - /** - * @hide - */ - public ExtensionVersionImpl() { - } - - /** - * Provide the current CameraX extension library version to vendor library and vendor would - * need to return the supported version for this device. If the returned version is not - * supported by CameraX library, the Preview and ImageCapture would not be able to enable the - * specific effects provided by the vendor. - * - * <p>CameraX library provides the Semantic Versioning string in a form of - * MAJOR.MINOR.PATCH-description - * We will increment the - * MAJOR version when make incompatible API changes, - * MINOR version when add functionality in a backwards-compatible manner, and - * PATCH version when make backwards-compatible bug fixes. And the description can be ignored. - * - * <p>Vendor library should provide MAJOR.MINOR.PATCH to CameraX. The MAJOR and MINOR - * version is used to map to the version of CameraX that it supports, and CameraX extension - * would only available when MAJOR version is matched with CameraX current version. The PATCH - * version does not indicate compatibility. The patch version should be incremented whenever - * the vendor library makes bug fixes or updates to the algorithm. - * - * @param version the version of CameraX library formatted as MAJOR.MINOR.PATCH-description. - * @return the version that vendor supported in this device. The MAJOR.MINOR.PATCH format - * should be used. - */ - /** - * @hide - */ - public String checkApiVersion(String version) { - Log.d(TAG, "Extension device library version " + VERSION); - return VERSION; - } -} diff --git a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/HdrImageCaptureExtenderImpl.java b/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/HdrImageCaptureExtenderImpl.java deleted file mode 100644 index d6f017f4..00000000 --- a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/HdrImageCaptureExtenderImpl.java +++ /dev/null @@ -1,250 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package androidx.camera.extensions.impl; - -import android.content.Context; -import android.hardware.camera2.CameraCharacteristics; -import android.hardware.camera2.CaptureRequest; -import android.hardware.camera2.TotalCaptureResult; -import android.media.Image; -import android.media.ImageWriter; -import android.os.Build; -import android.util.Log; -import android.util.Pair; -import android.util.Size; -import android.view.Surface; - -import java.nio.ByteBuffer; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.concurrent.TimeUnit; - -/** - * Implementation for HDR image capture use case. - * - * <p>This class should be implemented by OEM and deployed to the target devices. 3P developers - * don't need to implement this, unless this is used for related testing usage. - * - * @since 1.0 - * @hide - */ -public final class HdrImageCaptureExtenderImpl implements ImageCaptureExtenderImpl { - private static final String TAG = "HdrImageCaptureExtender"; - private static final int UNDER_STAGE_ID = 0; - private static final int NORMAL_STAGE_ID = 1; - private static final int OVER_STAGE_ID = 2; - private static final int SESSION_STAGE_ID = 101; - - /** - * @hide - */ - public HdrImageCaptureExtenderImpl() { - } - - /** - * @hide - */ - @Override - public void init(String cameraId, CameraCharacteristics cameraCharacteristics) { - } - - /** - * @hide - */ - @Override - public boolean isExtensionAvailable(String cameraId, - CameraCharacteristics cameraCharacteristics) { - // Requires API 23 for ImageWriter - return android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M; - } - - /** - * @hide - */ - @Override - public List<CaptureStageImpl> getCaptureStages() { - // Under exposed capture stage - SettableCaptureStage captureStageUnder = new SettableCaptureStage(UNDER_STAGE_ID); - // Turn off AE so that ISO sensitivity can be controlled - captureStageUnder.addCaptureRequestParameters(CaptureRequest.CONTROL_AE_MODE, - CaptureRequest.CONTROL_AE_MODE_OFF); - captureStageUnder.addCaptureRequestParameters(CaptureRequest.SENSOR_EXPOSURE_TIME, - TimeUnit.MILLISECONDS.toNanos(8)); - - // Normal exposed capture stage - SettableCaptureStage captureStageNormal = new SettableCaptureStage(NORMAL_STAGE_ID); - captureStageNormal.addCaptureRequestParameters(CaptureRequest.SENSOR_EXPOSURE_TIME, - TimeUnit.MILLISECONDS.toNanos(16)); - - // Over exposed capture stage - SettableCaptureStage captureStageOver = new SettableCaptureStage(OVER_STAGE_ID); - captureStageOver.addCaptureRequestParameters(CaptureRequest.SENSOR_EXPOSURE_TIME, - TimeUnit.MILLISECONDS.toNanos(32)); - - List<CaptureStageImpl> captureStages = new ArrayList<>(); - captureStages.add(captureStageUnder); - captureStages.add(captureStageNormal); - captureStages.add(captureStageOver); - return captureStages; - } - - /** - * @hide - */ - @Override - public CaptureProcessorImpl getCaptureProcessor() { - CaptureProcessorImpl captureProcessor = - new CaptureProcessorImpl() { - private ImageWriter mImageWriter; - - @Override - public void onOutputSurface(Surface surface, int imageFormat) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - mImageWriter = ImageWriter.newInstance(surface, 1); - } - } - - @Override - public void process(Map<Integer, Pair<Image, TotalCaptureResult>> results) { - Log.d(TAG, "Started HDR CaptureProcessor"); - - // Check for availability of all requested images - if (!results.containsKey(UNDER_STAGE_ID)) { - Log.w(TAG, - "Unable to process since images does not contain " - + "underexposed image."); - return; - } - - if (!results.containsKey(NORMAL_STAGE_ID)) { - Log.w(TAG, - "Unable to process since images does not contain normal " - + "exposed image."); - return; - } - - if (!results.containsKey(OVER_STAGE_ID)) { - Log.w(TAG, - "Unable to process since images does not contain " - + "overexposed image."); - return; - } - - // Do processing of images, our placeholder logic just copies the first - // Image into the output buffer. - List<Pair<Image, TotalCaptureResult>> imageDataPairs = new ArrayList<>( - results.values()); - Image image = null; - if (android.os.Build.VERSION.SDK_INT - >= android.os.Build.VERSION_CODES.M) { - image = mImageWriter.dequeueInputImage(); - - // Do processing here - ByteBuffer yByteBuffer = image.getPlanes()[0].getBuffer(); - ByteBuffer uByteBuffer = image.getPlanes()[2].getBuffer(); - ByteBuffer vByteBuffer = image.getPlanes()[1].getBuffer(); - - // Sample here just simply return the normal image result - yByteBuffer.put(imageDataPairs.get(1).first.getPlanes()[0].getBuffer()); - uByteBuffer.put(imageDataPairs.get(1).first.getPlanes()[2].getBuffer()); - vByteBuffer.put(imageDataPairs.get(1).first.getPlanes()[1].getBuffer()); - - mImageWriter.queueInputImage(image); - } - - // Close all input images - for (Pair<Image, TotalCaptureResult> imageDataPair : imageDataPairs) { - imageDataPair.first.close(); - } - - Log.d(TAG, "Completed HDR CaptureProcessor"); - } - - @Override - public void onResolutionUpdate(Size size) { - - } - - @Override - public void onImageFormatUpdate(int imageFormat) { - - } - }; - return captureProcessor; - } - - /** - * @hide - */ - @Override - public void onInit(String cameraId, CameraCharacteristics cameraCharacteristics, - Context context) { - - } - - /** - * @hide - */ - @Override - public void onDeInit() { - - } - - /** - * @hide - */ - @Override - public CaptureStageImpl onPresetSession() { - SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID); - return captureStage; - } - - /** - * @hide - */ - @Override - public CaptureStageImpl onEnableSession() { - SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID); - return captureStage; - } - - /** - * @hide - */ - @Override - public CaptureStageImpl onDisableSession() { - SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID); - return captureStage; - } - - /** - * @hide - */ - @Override - public int getMaxCaptureStage() { - return 4; - } - - /** - * @hide - */ - @Override - public List<Pair<Integer, Size[]>> getSupportedResolutions() { - return null; - } - -} diff --git a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/HdrPreviewExtenderImpl.java b/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/HdrPreviewExtenderImpl.java deleted file mode 100644 index 2a47109d..00000000 --- a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/HdrPreviewExtenderImpl.java +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl; - -import android.content.Context; -import android.hardware.camera2.CameraCharacteristics; -import android.hardware.camera2.TotalCaptureResult; -import android.media.ImageWriter; -import android.media.Image; -import android.util.Pair; -import android.util.Size; -import android.view.Surface; - -import java.util.List; - -/** - * Implementation for HDR preview use case. - * - * <p>This class should be implemented by OEM and deployed to the target devices. 3P developers - * don't need to implement this, unless this is used for related testing usage. - * - * @since 1.0 - * @hide - */ -public final class HdrPreviewExtenderImpl implements PreviewExtenderImpl { - private static final int DEFAULT_STAGE_ID = 0; - - ImageWriter mWriter; - - /** - * @hide - */ - public HdrPreviewExtenderImpl() { } - - /** - * @hide - */ - @Override - public void init(String cameraId, CameraCharacteristics cameraCharacteristics) { - } - - /** - * @hide - */ - @Override - public boolean isExtensionAvailable(String cameraId, - CameraCharacteristics cameraCharacteristics) { - // Implement the logic to check whether the extension function is supported or not. - return true; - } - - /** - * @hide - */ - @Override - public CaptureStageImpl getCaptureStage() { - // Set the necessary CaptureRequest parameters via CaptureStage, here we use some - // placeholder set of CaptureRequest.Key values - SettableCaptureStage captureStage = new SettableCaptureStage(DEFAULT_STAGE_ID); - - return captureStage; - } - - /** - * @hide - */ - @Override - public ProcessorType getProcessorType() { - return ProcessorType.PROCESSOR_TYPE_IMAGE_PROCESSOR; - } - - /** - * @hide - */ - @Override - public ProcessorImpl getProcessor() { - return mProcessor; - } - - /** - * @hide - */ - @Override - public List<Pair<Integer, Size[]>> getSupportedResolutions() { - return null; - } - - private PreviewImageProcessorImpl mProcessor = new PreviewImageProcessorImpl() { - Surface mSurface; - int mFormat = -1; - - private void setWindowSurface() { - if (mSurface != null && mFormat >= 0) { - if (mWriter != null) { - mWriter.close(); - } - - mWriter = ImageWriter.newInstance(mSurface, 2, mFormat); - } - } - - @Override - public void onOutputSurface(Surface surface, int imageFormat) { - mSurface = surface; - mFormat = imageFormat; - setWindowSurface(); - } - - @Override - public void process(Image image, TotalCaptureResult result) { - mWriter.queueInputImage(image); - } - - @Override - public void onResolutionUpdate(Size size) { - } - - @Override - public void onImageFormatUpdate(int imageFormat) { - } - }; - - /** - * @hide - */ - @Override - public void onInit(String cameraId, CameraCharacteristics cameraCharacteristics, - Context context) { - } - - /** - * @hide - */ - @Override - public void onDeInit() { - if (mWriter != null) { - mWriter.close(); - mWriter = null; - } - } - - /** - * @hide - */ - @Override - public CaptureStageImpl onPresetSession() { - return null; - } - - /** - * @hide - */ - @Override - public CaptureStageImpl onEnableSession() { - return null; - } - - /** - * @hide - */ - @Override - public CaptureStageImpl onDisableSession() { - return null; - } -} diff --git a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/ImageCaptureExtenderImpl.java b/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/ImageCaptureExtenderImpl.java deleted file mode 100644 index b70038fc..00000000 --- a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/ImageCaptureExtenderImpl.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl; - -import android.graphics.ImageFormat; -import android.hardware.camera2.CameraCharacteristics; -import android.util.Pair; -import android.util.Size; - -import java.util.List; - -/** - * Provides abstract methods that the OEM needs to implement to enable extensions for image capture. - * - * @since 1.0 - * @hide - */ -public interface ImageCaptureExtenderImpl extends ExtenderStateListener { - /** - * Indicates whether the extension is supported on the device. - * - * @param cameraId The camera2 id string of the camera. - * @param cameraCharacteristics The {@link CameraCharacteristics} of the camera. - * @return true if the extension is supported, otherwise false - * @hide - */ - boolean isExtensionAvailable(String cameraId, CameraCharacteristics cameraCharacteristics); - - /** - * Initializes the extender to be used with the specified camera. - * - * <p>This should be called before any other method on the extender. The exception is {@link - * #isExtensionAvailable(String, CameraCharacteristics)}. - * - * @param cameraId The camera2 id string of the camera. - * @param cameraCharacteristics The {@link CameraCharacteristics} of the camera. - * @hide - */ - void init(String cameraId, CameraCharacteristics cameraCharacteristics); - - /** - * The processing that will be done on a set of captures to create and image with the effect. - * @hide - */ - CaptureProcessorImpl getCaptureProcessor(); - - /** - * @hide - */ - /** The set of captures that are needed to create an image with the effect. */ - List<CaptureStageImpl> getCaptureStages(); - - /** - * Returns the maximum size of the list returned by {@link #getCaptureStages()}. - * @return the maximum count. - * @hide - */ - int getMaxCaptureStage(); - - /** - * Returns the customized supported resolutions. - * - * <p>Pair list composed with {@link ImageFormat} and {@link Size} array will be returned. - * - * <p>The returned resolutions should be subset of the supported sizes retrieved from - * {@link android.hardware.camera2.params.StreamConfigurationMap} for the camera device. If the - * 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. - * @since 1.1 - * @hide - */ - List<Pair<Integer, Size[]>> getSupportedResolutions(); -} - diff --git a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/InitializerImpl.java b/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/InitializerImpl.java deleted file mode 100644 index fe2afd52..00000000 --- a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/InitializerImpl.java +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package androidx.camera.extensions.impl; - -import android.content.Context; -import android.util.Log; - -import java.util.concurrent.Executor; -import java.util.concurrent.Executors; - -/** - * Used for initializing the extensions library. - * - * @since 1.1 - * @hide - */ -public class InitializerImpl { - private InitializerImpl() { - } - - private static final String TAG = "InitializerImpl"; - /** - * An unknown error has occurred. - * @hide - */ - public static final int ERROR_UNKNOWN = 0; - /** - * Error reported if the application version of extensions is incompatible with the on device - * library version. - * @hide - */ - public static final int ERROR_INITIALIZE_VERSION_INCOMPATIBLE = 1; - private static Executor sExecutor = Executors.newSingleThreadExecutor(); - - /** - * Initializes the {@link Context}. - * - * <p>Before this call has been made no calls to the extensions library should be made except - * for {@link ExtensionVersionImpl#checkApiVersion(String)}. - * - * @param version The version of the extension used by the application. - * @param context The {@link Context} of the calling application. - * @param executor The executor to run the callback on. If null then the callback will run on - * any arbitrary executor. - * @hide - */ - public static void init(String version, Context context, - OnExtensionsInitializedCallback callback, Executor executor) { - Log.d(TAG, "initializing extensions"); - if (executor == null) { - sExecutor.execute(callback::onSuccess); - } else { - executor.execute(callback::onSuccess); - } - } - - /** - * Deinitializes the extensions to release resources. - * - * <p>After this call has been made no calls to the extensions library should be made except - * for {@link ExtensionVersionImpl#checkApiVersion(String)}. - * - * @param executor The executor to run the callback on. If null then the callback will run on - * any arbitrary executor. - * @hide - */ - public static void deinit(OnExtensionsDeinitializedCallback callback, - Executor executor) { - Log.d(TAG, "deinitializing extensions"); - if (executor == null) { - sExecutor.execute(callback::onSuccess); - } else { - executor.execute(callback::onSuccess); - } - } - - /** - * Callback that gets called when the library has finished initializing and is ready for used. - * @hide - */ - public interface OnExtensionsInitializedCallback { - /** Called if the library successfully initializes. */ - void onSuccess(); - - /** - * Called if the library is unable to successfully initialize. - * - * @param error The reason for failing to initialize. - */ - void onFailure(int error); - } - - /** - * Callback that gets called when the library has finished deinitialized. - * - * <p> Once this interface has been called then - * {@link #init(String, Context, OnExtensionsInitializedCallback, Executor)} can be called - * again regardless of whether or not the deinitialization has succeeded or failed. - * @hide - */ - public interface OnExtensionsDeinitializedCallback { - /** Called if the library successfully deinitializes. */ - void onSuccess(); - - /** - * Called if the library encountered some error during the deinitialization. - * - * <p>Even if the library fails to deinitialize it is now valid for {@link - * #init(String, Context, OnExtensionsInitializedCallback, Executor)} to be called - * again. - * - * @param error The reason for failing to deinitialize. - */ - void onFailure(int error); - } -} 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 deleted file mode 100755 index 3d00a460..00000000 --- a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/NightImageCaptureExtenderImpl.java +++ /dev/null @@ -1,235 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package androidx.camera.extensions.impl; - -import android.content.Context; -import android.hardware.camera2.CameraCharacteristics; -import android.hardware.camera2.CaptureRequest; -import android.hardware.camera2.TotalCaptureResult; -import android.media.Image; -import android.media.ImageWriter; -import android.os.Build; -import android.util.Log; -import android.util.Pair; -import android.util.Size; -import android.view.Surface; - -import java.nio.ByteBuffer; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -/** - * Implementation for night image capture use case. - * - * <p>This class should be implemented by OEM and deployed to the target devices. 3P developers - * don't need to implement this, unless this is used for related testing usage. - * - * @since 1.0 - * @hide - */ -public final class NightImageCaptureExtenderImpl implements ImageCaptureExtenderImpl { - private static final String TAG = "NightICExtender"; - private static final int DEFAULT_STAGE_ID = 0; - private static final int SESSION_STAGE_ID = 101; - private static final int MODE = CaptureRequest.CONTROL_AWB_MODE_INCANDESCENT; - - /** - * @hide - */ - public NightImageCaptureExtenderImpl() { - } - - /** - * @hide - */ - @Override - public void init(String cameraId, CameraCharacteristics cameraCharacteristics) { - } - - /** - * @hide - */ - @Override - public boolean isExtensionAvailable(String cameraId, - CameraCharacteristics cameraCharacteristics) { - return false; - } - - public boolean isExtensionAvailableOriginal(String cameraId, - CameraCharacteristics cameraCharacteristics) { - // Requires API 23 for ImageWriter - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { - return false; - } - - if (cameraCharacteristics == null) { - return false; - } - - return CameraCharacteristicAvailability.isWBModeAvailable(cameraCharacteristics, MODE); - } - - /** - * @hide - */ - @Override - public List<CaptureStageImpl> getCaptureStages() { - // Placeholder set of CaptureRequest.Key values - SettableCaptureStage captureStage = new SettableCaptureStage(DEFAULT_STAGE_ID); - captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_AWB_MODE, MODE); - List<CaptureStageImpl> captureStages = new ArrayList<>(); - captureStages.add(captureStage); - return captureStages; - } - - /** - * @hide - */ - @Override - public CaptureProcessorImpl getCaptureProcessor() { - CaptureProcessorImpl captureProcessor = - new CaptureProcessorImpl() { - private ImageWriter mImageWriter; - - @Override - public void onOutputSurface(Surface surface, int imageFormat) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - mImageWriter = ImageWriter.newInstance(surface, 1); - } - } - - @Override - public void process(Map<Integer, Pair<Image, TotalCaptureResult>> results) { - Log.d(TAG, "Started night CaptureProcessor"); - - Pair<Image, TotalCaptureResult> result = results.get(DEFAULT_STAGE_ID); - - if (result == null) { - Log.w(TAG, - "Unable to process since images does not contain all stages."); - return; - } else { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - Image image = mImageWriter.dequeueInputImage(); - - // Do processing here - ByteBuffer yByteBuffer = image.getPlanes()[0].getBuffer(); - ByteBuffer uByteBuffer = image.getPlanes()[2].getBuffer(); - ByteBuffer vByteBuffer = image.getPlanes()[1].getBuffer(); - - // Sample here just simply copy/paste the capture image result - yByteBuffer.put(result.first.getPlanes()[0].getBuffer()); - uByteBuffer.put(result.first.getPlanes()[2].getBuffer()); - vByteBuffer.put(result.first.getPlanes()[1].getBuffer()); - - mImageWriter.queueInputImage(image); - } - } - - // Close all input images - for (Pair<Image, TotalCaptureResult> imageDataPair : results.values()) { - imageDataPair.first.close(); - } - - Log.d(TAG, "Completed night CaptureProcessor"); - } - - @Override - public void onResolutionUpdate(Size size) { - - } - - @Override - public void onImageFormatUpdate(int imageFormat) { - - } - }; - return captureProcessor; - } - - /** - * @hide - */ - @Override - public void onInit(String cameraId, CameraCharacteristics cameraCharacteristics, - Context context) { - - } - - /** - * @hide - */ - @Override - public void onDeInit() { - - } - - /** - * @hide - */ - @Override - public CaptureStageImpl onPresetSession() { - // Set the necessary CaptureRequest parameters via CaptureStage, here we use some - // placeholder set of CaptureRequest.Key values - SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID); - captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_AWB_MODE, MODE); - - return captureStage; - } - - /** - * @hide - */ - @Override - public CaptureStageImpl onEnableSession() { - // Set the necessary CaptureRequest parameters via CaptureStage, here we use some - // placeholder set of CaptureRequest.Key values - SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID); - captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_AWB_MODE, MODE); - - return captureStage; - } - - /** - * @hide - */ - @Override - public CaptureStageImpl onDisableSession() { - // Set the necessary CaptureRequest parameters via CaptureStage, here we use some - // placeholder set of CaptureRequest.Key values - SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID); - captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_AWB_MODE, MODE); - - return captureStage; - } - - /** - * @hide - */ - @Override - public int getMaxCaptureStage() { - return 3; - } - - /** - * @hide - */ - @Override - public List<Pair<Integer, Size[]>> getSupportedResolutions() { - return null; - } -} diff --git a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/NightPreviewExtenderImpl.java b/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/NightPreviewExtenderImpl.java deleted file mode 100755 index e29abec1..00000000 --- a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/NightPreviewExtenderImpl.java +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package androidx.camera.extensions.impl; - -import android.content.Context; -import android.hardware.camera2.CameraCharacteristics; -import android.hardware.camera2.CaptureRequest; -import android.util.Pair; -import android.util.Size; - -import java.util.List; - -/** - * Implementation for night preview use case. - * - * <p>This class should be implemented by OEM and deployed to the target devices. 3P developers - * don't need to implement this, unless this is used for related testing usage. - * - * @since 1.0 - * @hide - */ -public final class NightPreviewExtenderImpl implements PreviewExtenderImpl { - private static final int DEFAULT_STAGE_ID = 0; - private static final int SESSION_STAGE_ID = 101; - private static final int MODE = CaptureRequest.CONTROL_AWB_MODE_INCANDESCENT; - - /** - * @hide - */ - public NightPreviewExtenderImpl() { - } - - /** - * @hide - */ - @Override - public void init(String cameraId, CameraCharacteristics cameraCharacteristics) { - } - - /** - * @hide - */ - @Override - public boolean isExtensionAvailable(String cameraId, - CameraCharacteristics cameraCharacteristics) { - return false; - } - - public boolean isExtensionAvailableOriginal(String cameraId, - CameraCharacteristics cameraCharacteristics) { - // Implement the logic to check whether the extension function is supported or not. - - if (cameraCharacteristics == null) { - return false; - } - - return CameraCharacteristicAvailability.isWBModeAvailable(cameraCharacteristics, MODE); - } - - /** - * @hide - */ - @Override - public CaptureStageImpl getCaptureStage() { - // Set the necessary CaptureRequest parameters via CaptureStage, here we use some - // placeholder set of CaptureRequest.Key values - SettableCaptureStage captureStage = new SettableCaptureStage(DEFAULT_STAGE_ID); - captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_AWB_MODE, MODE); - - return captureStage; - } - - /** - * @hide - */ - @Override - public ProcessorType getProcessorType() { - return ProcessorType.PROCESSOR_TYPE_REQUEST_UPDATE_ONLY; - } - - /** - * @hide - */ - @Override - public ProcessorImpl getProcessor() { - return RequestUpdateProcessorImpls.noUpdateProcessor(); - } - - /** - * @hide - */ - @Override - public List<Pair<Integer, Size[]>> getSupportedResolutions() { - return null; - } - - /** - * @hide - */ - @Override - public void onInit(String cameraId, CameraCharacteristics cameraCharacteristics, - Context context) { - - } - - /** - * @hide - */ - @Override - public void onDeInit() { - - } - - /** - * @hide - */ - @Override - public CaptureStageImpl onPresetSession() { - // Set the necessary CaptureRequest parameters via CaptureStage, here we use some - // placeholder set of CaptureRequest.Key values - SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID); - captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_AWB_MODE, MODE); - - return captureStage; - } - - /** - * @hide - */ - @Override - public CaptureStageImpl onEnableSession() { - // Set the necessary CaptureRequest parameters via CaptureStage, here we use some - // placeholder set of CaptureRequest.Key values - SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID); - captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_AWB_MODE, MODE); - - return captureStage; - } - - /** - * @hide - */ - @Override - public CaptureStageImpl onDisableSession() { - // Set the necessary CaptureRequest parameters via CaptureStage, here we use some - // placeholder set of CaptureRequest.Key values - SettableCaptureStage captureStage = new SettableCaptureStage(SESSION_STAGE_ID); - captureStage.addCaptureRequestParameters(CaptureRequest.CONTROL_AWB_MODE, MODE); - - return captureStage; - } -} diff --git a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/PreviewExtenderImpl.java b/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/PreviewExtenderImpl.java deleted file mode 100644 index 6b7be854..00000000 --- a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/PreviewExtenderImpl.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl; - -import android.graphics.ImageFormat; -import android.hardware.camera2.CameraCharacteristics; -import android.hardware.camera2.TotalCaptureResult; -import android.util.Pair; -import android.util.Size; - -import java.util.List; - -/** - * Provides abstract methods that the OEM needs to implement to enable extensions in the preview. - * - * @since 1.0 - * @hide - */ -public interface PreviewExtenderImpl extends ExtenderStateListener { - /** The different types of the preview processing. */ - enum ProcessorType { - /** Processor which only updates the {@link CaptureStageImpl}. */ - PROCESSOR_TYPE_REQUEST_UPDATE_ONLY, - /** Processor which updates the received {@link android.media.Image}. */ - PROCESSOR_TYPE_IMAGE_PROCESSOR, - /** No processor, only a {@link CaptureStageImpl} is defined. */ - PROCESSOR_TYPE_NONE - } - - /** - * Indicates whether the extension is supported on the device. - * - * @param cameraId The camera2 id string of the camera. - * @param cameraCharacteristics The {@link CameraCharacteristics} of the camera. - * @return true if the extension is supported, otherwise false - */ - boolean isExtensionAvailable(String cameraId, CameraCharacteristics cameraCharacteristics); - - /** - * Initializes the extender to be used with the specified camera. - * - * <p>This should be called before any other method on the extender. The exception is {@link - * #isExtensionAvailable(String, CameraCharacteristics)}. - * - * @param cameraId The camera2 id string of the camera. - * @param cameraCharacteristics The {@link CameraCharacteristics} of the camera. - */ - void init(String cameraId, CameraCharacteristics cameraCharacteristics); - - /** - * The set of parameters required to produce the effect on the preview stream. - * - * <p> This will be the initial set of parameters used for the preview - * {@link android.hardware.camera2.CaptureRequest}. If the {@link ProcessorType} is defined as - * {@link ProcessorType#PROCESSOR_TYPE_REQUEST_UPDATE_ONLY} then this will be updated when - * the {@link RequestUpdateProcessorImpl#process(TotalCaptureResult)} from {@link - * #getProcessor()} has been called, this should be updated to reflect the new {@link - * CaptureStageImpl}. If the processing step returns a {@code null}, meaning the required - * parameters has not changed, then calling this will return the previous non-null value. - */ - CaptureStageImpl getCaptureStage(); - - /** The type of preview processing to use. */ - ProcessorType getProcessorType(); - - /** - * Returns a processor which only updates the {@link CaptureStageImpl}. - * - * <p>The type of processor is dependent on the return of {@link #getProcessorType()}. The - * type of ProcessorImpl returned will be according to the following table. - * - * <table> - * <tr><th> ProcessorType </th> <th> ProcessorImpl </th> </tr> - * <tr><td> PROCESSOR_TYPE_REQUEST_UPDATE_ONLY </td> <td> RequestUpdateProcessorImpl </td> </tr> - * <tr><td> PROCESSOR_TYPE_IMAGE_PROCESSOR </td> <td> PreviewImageProcessorImpl </td> </tr> - * <tr><td> PROCESSOR_TYPE_NONE </td> <td> null </td> </tr> - * </table> - */ - ProcessorImpl getProcessor(); - - /** - * Returns the customized supported resolutions. - * - * <p>Pair list composed with {@link ImageFormat} and {@link Size} array will be returned. - * - * <p>The returned resolutions should be subset of the supported sizes retrieved from - * {@link android.hardware.camera2.params.StreamConfigurationMap} for the camera device. If the - * 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. - * @since 1.1 - */ - List<Pair<Integer, Size[]>> getSupportedResolutions(); -} diff --git a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/PreviewImageProcessorImpl.java b/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/PreviewImageProcessorImpl.java deleted file mode 100644 index 3c750db7..00000000 --- a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/PreviewImageProcessorImpl.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl; - -import android.hardware.camera2.TotalCaptureResult; -import android.media.Image; - -/** - * Processing a single {@link Image} and {@link TotalCaptureResult} to produce an output to a - * stream. - * - * @since 1.0 - * @hide - */ -public interface PreviewImageProcessorImpl extends ProcessorImpl { - /** - * Processes the requested image capture. - * - * <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 result The metadata associated with the image to process. - * @hide - */ - void process(Image image, TotalCaptureResult result); -} - diff --git a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/ProcessorImpl.java b/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/ProcessorImpl.java deleted file mode 100644 index c97e6ed0..00000000 --- a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/ProcessorImpl.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl; - -import android.util.Size; -import android.view.Surface; - -/** - * Processes an input image stream and produces an output image stream. - * - * @since 1.0 - * @hide - */ -public interface ProcessorImpl { - /** - * Updates where the ProcessorImpl should write the output to. - * - * @param surface The {@link Surface} that the ProcessorImpl should write data into. - * @param imageFormat The format of that the surface expects. - */ - void onOutputSurface(Surface surface, int imageFormat); - - /** - * Invoked when CameraX changes the configured output resolution. - * - * <p>After this call, {@link CaptureProcessorImpl} should expect any {@link Image} received as - * input to be at the specified resolution. - * - * @param size for the surface. - */ - void onResolutionUpdate(Size size); - - /** - * Invoked when CameraX changes the configured input image format. - * - * <p>After this call, {@link CaptureProcessorImpl} should expect any {@link Image} received as - * input to have the specified image format. - * - * @param imageFormat for the surface. - */ - void onImageFormatUpdate(int imageFormat); -} diff --git a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/RequestUpdateProcessorImpl.java b/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/RequestUpdateProcessorImpl.java deleted file mode 100644 index 4edf05f6..00000000 --- a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/RequestUpdateProcessorImpl.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl; - -import android.hardware.camera2.TotalCaptureResult; - -/** - * Processes a {@link TotalCaptureResult} to update a CaptureStage. - * - * @since 1.0 - * @hide - */ -public interface RequestUpdateProcessorImpl extends ProcessorImpl { - /** - * Process the {@link TotalCaptureResult} to update the {@link CaptureStageImpl} - * - * @param result The metadata associated with the image. Can be null if the image and meta have - * not been synced. - * @return The updated parameters used for the repeating requests. If this is {@code null} then - * the previous parameters will be used. - */ - CaptureStageImpl process(TotalCaptureResult result); -} diff --git a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/RequestUpdateProcessorImpls.java b/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/RequestUpdateProcessorImpls.java deleted file mode 100644 index afbad001..00000000 --- a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/RequestUpdateProcessorImpls.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl; - -import android.hardware.camera2.TotalCaptureResult; -import android.util.Size; -import android.view.Surface; - -class RequestUpdateProcessorImpls { - private static final RequestUpdateProcessorImpl sNoUpdateProcessor = - new RequestUpdateProcessorImpl() { - @Override - public CaptureStageImpl process(TotalCaptureResult result) { - return null; - } - - @Override - public void onOutputSurface(Surface surface, int imageFormat) {} - - @Override - public void onResolutionUpdate(Size size) {} - - @Override - public void onImageFormatUpdate(int imageFormat) {} - }; - - static RequestUpdateProcessorImpl noUpdateProcessor() { - return sNoUpdateProcessor; - } - - private RequestUpdateProcessorImpls() { - } -} diff --git a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/SettableCaptureStage.java b/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/SettableCaptureStage.java deleted file mode 100644 index 7d5dcb1e..00000000 --- a/camera2/extensions/sample/src/java/androidx/camera/extensions/impl/SettableCaptureStage.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl; - -import android.hardware.camera2.CaptureRequest; -import android.util.Pair; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -final class SettableCaptureStage implements CaptureStageImpl { - private final int mId; - - private Map<CaptureRequest.Key, Object> mCaptureRequestKeyValueMap = new HashMap<>(); - - /** - * Constructor for a {@link CaptureStageImpl} with specific identifier. - * - * <p>After this {@link CaptureStageImpl} is applied to a single capture operation, - * developers can - * retrieve the {@link android.media.Image} object with the identifier. - * - * @param id The identifier for the {@link CaptureStageImpl}. - */ - SettableCaptureStage(int id) { - mId = id; - } - - /** - * @hide - */ - /** Returns the identifier for the {@link CaptureStageImpl}. */ - @Override - public int getId() { - return mId; - } - - /** - * @hide - */ - @Override - public List<Pair<CaptureRequest.Key, Object>> getParameters() { - List<Pair<CaptureRequest.Key, Object>> parameters = new ArrayList<>(); - - for (Map.Entry<CaptureRequest.Key, Object> entry : mCaptureRequestKeyValueMap.entrySet()) { - parameters.add(Pair.create(entry.getKey(), entry.getValue())); - } - - return parameters; - } - - /** - * Adds necessary {@link CaptureRequest.Key} settings into the {@link CaptureStageImpl} object. - */ - <T> void addCaptureRequestParameters(CaptureRequest.Key<T> key, T value) { - mCaptureRequestKeyValueMap.put(key, value); - } -} diff --git a/camera2/extensions/stub/Android.bp b/camera2/extensions/stub/Android.bp deleted file mode 100644 index 7ebfdea6..00000000 --- a/camera2/extensions/stub/Android.bp +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (C) 2020 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package { - default_applicable_licenses: ["Android-Apache-2.0"], -} - -java_library { - name: "androidx.camera.extensions.stub", - installable: true, - - static_libs: ["androidx.annotation_annotation"], - - srcs: ["src/**/*.java"], - - sdk_version: "current", -} diff --git a/camera2/extensions/stub/src/main/AndroidManifest.xml b/camera2/extensions/stub/src/main/AndroidManifest.xml deleted file mode 100644 index 24ec9a7d..00000000 --- a/camera2/extensions/stub/src/main/AndroidManifest.xml +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright 2019 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - --> -<manifest package="androidx.camera.extensions.impl"/>
\ No newline at end of file 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 deleted file mode 100755 index a364d4b9..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/AutoImageCaptureExtenderImpl.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package androidx.camera.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; -import androidx.annotation.Nullable; - -import java.util.List; - -/** - * Stub implementation for auto image capture use case. - * - * <p>This class should be implemented by OEM and deployed to the target devices. - * - * @since 1.0 - */ -public final class AutoImageCaptureExtenderImpl implements ImageCaptureExtenderImpl { - public AutoImageCaptureExtenderImpl() {} - - @Override - public boolean isExtensionAvailable(@NonNull String cameraId, - @Nullable CameraCharacteristics cameraCharacteristics) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void init(String cameraId, CameraCharacteristics cameraCharacteristics) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureProcessorImpl getCaptureProcessor() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public List<CaptureStageImpl> getCaptureStages() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public int getMaxCaptureStage() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void onInit(String cameraId, CameraCharacteristics cameraCharacteristics, - Context context) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void onDeInit() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl onPresetSession() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl onEnableSession() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl onDisableSession() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - 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/AutoPreviewExtenderImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/AutoPreviewExtenderImpl.java deleted file mode 100755 index 100f6658..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/AutoPreviewExtenderImpl.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl; - -import android.content.Context; -import android.hardware.camera2.CameraCharacteristics; -import android.util.Pair; -import android.util.Size; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import java.util.List; - -/** - * Stub implementation for auto preview use case. - * - * <p>This class should be implemented by OEM and deployed to the target devices. - * - * @since 1.0 - */ -public final class AutoPreviewExtenderImpl implements PreviewExtenderImpl { - public AutoPreviewExtenderImpl() { - } - - @Override - public boolean isExtensionAvailable(@NonNull String cameraId, - @Nullable CameraCharacteristics cameraCharacteristics) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void init(String cameraId, CameraCharacteristics cameraCharacteristics) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl getCaptureStage() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public ProcessorType getProcessorType() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public ProcessorImpl getProcessor() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void onInit(String cameraId, CameraCharacteristics cameraCharacteristics, - Context context) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void onDeInit() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl onPresetSession() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl onEnableSession() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl onDisableSession() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public List<Pair<Integer, Size[]>> getSupportedResolutions() { - 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 deleted file mode 100755 index d68d8eb0..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/BeautyImageCaptureExtenderImpl.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package androidx.camera.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; -import androidx.annotation.Nullable; - -import java.util.List; - -/** - * Stub implementation for beauty image capture use case. - * - * <p>This class should be implemented by OEM and deployed to the target devices. - * - * @since 1.0 - */ -public final class BeautyImageCaptureExtenderImpl implements ImageCaptureExtenderImpl { - public BeautyImageCaptureExtenderImpl() {} - - @Override - public boolean isExtensionAvailable(@NonNull String cameraId, - @Nullable CameraCharacteristics cameraCharacteristics) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void init(String cameraId, CameraCharacteristics cameraCharacteristics) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureProcessorImpl getCaptureProcessor() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public List<CaptureStageImpl> getCaptureStages() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public int getMaxCaptureStage() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void onInit(String cameraId, CameraCharacteristics cameraCharacteristics, - Context context) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void onDeInit() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl onPresetSession() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl onEnableSession() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl onDisableSession() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - 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/BeautyPreviewExtenderImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/BeautyPreviewExtenderImpl.java deleted file mode 100755 index bc3e48dd..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/BeautyPreviewExtenderImpl.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl; - -import android.content.Context; -import android.hardware.camera2.CameraCharacteristics; -import android.util.Pair; -import android.util.Size; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import java.util.List; - -/** - * Stub implementation for beauty preview use case. - * - * <p>This class should be implemented by OEM and deployed to the target devices. - * - * @since 1.0 - */ -public final class BeautyPreviewExtenderImpl implements PreviewExtenderImpl { - public BeautyPreviewExtenderImpl() { - } - - @Override - public boolean isExtensionAvailable(@NonNull String cameraId, - @Nullable CameraCharacteristics cameraCharacteristics) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void init(String cameraId, CameraCharacteristics cameraCharacteristics) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl getCaptureStage() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public ProcessorType getProcessorType() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public ProcessorImpl getProcessor() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void onInit(String cameraId, CameraCharacteristics cameraCharacteristics, - Context context) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void onDeInit() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl onPresetSession() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl onEnableSession() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl onDisableSession() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public List<Pair<Integer, Size[]>> getSupportedResolutions() { - 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 deleted file mode 100644 index b943e0ae..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/BokehImageCaptureExtenderImpl.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package androidx.camera.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; -import androidx.annotation.Nullable; - -import java.util.List; - -/** - * Stub implementation for bokeh image capture use case. - * - * <p>This class should be implemented by OEM and deployed to the target devices. - * - * @since 1.0 - */ -public final class BokehImageCaptureExtenderImpl implements ImageCaptureExtenderImpl { - public BokehImageCaptureExtenderImpl() {} - - @Override - public boolean isExtensionAvailable(@NonNull String cameraId, - @Nullable CameraCharacteristics cameraCharacteristics) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void init(String cameraId, CameraCharacteristics cameraCharacteristics) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureProcessorImpl getCaptureProcessor() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public List<CaptureStageImpl> getCaptureStages() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public int getMaxCaptureStage() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void onInit(String cameraId, CameraCharacteristics cameraCharacteristics, - Context context) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void onDeInit() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl onPresetSession() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl onEnableSession() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl onDisableSession() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - 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/BokehPreviewExtenderImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/BokehPreviewExtenderImpl.java deleted file mode 100644 index ff588623..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/BokehPreviewExtenderImpl.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package androidx.camera.extensions.impl; - -import android.content.Context; -import android.hardware.camera2.CameraCharacteristics; -import android.util.Pair; -import android.util.Size; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import java.util.List; - -/** - * Stub implementation for bokeh preview use case. - * - * <p>This class should be implemented by OEM and deployed to the target devices. - * - * @since 1.0 - */ -public final class BokehPreviewExtenderImpl implements PreviewExtenderImpl { - public BokehPreviewExtenderImpl() {} - - @Override - public boolean isExtensionAvailable(@NonNull String cameraId, - @Nullable CameraCharacteristics cameraCharacteristics) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void init(String cameraId, CameraCharacteristics cameraCharacteristics) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl getCaptureStage() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public ProcessorType getProcessorType() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public ProcessorImpl getProcessor() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void onInit(String cameraId, CameraCharacteristics cameraCharacteristics, - Context context) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void onDeInit() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl onPresetSession() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl onEnableSession() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl onDisableSession() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public List<Pair<Integer, Size[]>> getSupportedResolutions() { - 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 deleted file mode 100644 index 90de15ab..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/CaptureProcessorImpl.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl; - -import android.graphics.ImageFormat; -import android.hardware.camera2.TotalCaptureResult; -import android.media.Image; -import android.util.Pair; -import android.view.Surface; - -import java.util.Map; - -/** - * The interface for processing a set of {@link Image}s that have captured. - * - * @since 1.0 - */ -public interface CaptureProcessorImpl extends ProcessorImpl { - /** - * Process a set images captured that were requested. - * - * <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 {@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/CaptureStageImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/CaptureStageImpl.java deleted file mode 100644 index c4796c20..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/CaptureStageImpl.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl; - -import android.hardware.camera2.CaptureRequest; -import android.util.Pair; - -import java.util.List; - -/** - * The set of parameters that defines a single capture that will be sent to the camera. - * - * @since 1.0 - */ -public interface CaptureStageImpl { - /** Returns the identifier for the {@link CaptureStageImpl}. */ - int getId(); - - /** - * Returns the set of {@link CaptureRequest.Key} and the corresponding values that will be - * set for a single {@link CaptureRequest}. - */ - List<Pair<CaptureRequest.Key, Object>> getParameters(); -} 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 deleted file mode 100644 index 2879568f..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/ExtenderStateListener.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl; - -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. - * - * @since 1.0 - */ -public interface ExtenderStateListener { - - /** - * Notify to initialize the extension. This will be called after bindToLifeCycle. This is - * where the use case is started and would be able to allocate resources here. After onInit() is - * called, the camera ID, cameraCharacteristics and context will not change until onDeInit() - * has been called. - * - * @param cameraId The camera2 id string of the camera. - * @param cameraCharacteristics The {@link CameraCharacteristics} of the camera. - * @param context The {@link Context} used for CameraX. - */ - void onInit(String cameraId, CameraCharacteristics cameraCharacteristics, Context context); - - /** - * 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, this should be where to clear all resources allocated for this use case. - */ - void onDeInit(); - - /** - * 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 - * {@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. - */ - CaptureStageImpl onPresetSession(); - - /** - * This will be invoked once after the {@link android.hardware.camera2.CameraCaptureSession} - * has been created. The {@link CaptureRequest} parameters returned via - * {@link CaptureStageImpl} will be used to generate a single request to the current - * configured {@link CameraDevice}. The generated request will be submitted to camera before - * processing other single requests. - * - * @return The request information to create a single capture request to camera device. - */ - CaptureStageImpl onEnableSession(); - - /** - * This will be invoked before the {@link android.hardware.camera2.CameraCaptureSession} is - * closed. The {@link CaptureRequest} parameters returned via {@link CaptureStageImpl} will - * be used to generate a single request to the currently configured {@link CameraDevice}. The - * generated request will be submitted to camera before the CameraCaptureSession is closed. - * - * @return The request information to customize the session. - */ - CaptureStageImpl onDisableSession(); -} 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 deleted file mode 100644 index 7769551f..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/ExtensionVersionImpl.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl; - -/** - * Stub implementation for the extension version check. - * - * <p>This class should be implemented by OEM and deployed to the target devices. - * - * @since 1.0 - */ -public class ExtensionVersionImpl { - public ExtensionVersionImpl() { - } - - /** - * Provide the current CameraX extension library version to vendor library and vendor would - * need to return the supported version for this device. If the returned version is not - * supported by CameraX library, the Preview and ImageCapture would not be able to enable the - * specific effects provided by the vendor. - * - * <p>CameraX library provides the Semantic Versioning string in a form of - * MAJOR.MINOR.PATCH-description - * We will increment the - * MAJOR version when make incompatible API changes, - * MINOR version when add functionality in a backwards-compatible manner, and - * PATCH version when make backwards-compatible bug fixes. And the description can be ignored. - * - * <p>Vendor library should provide MAJOR.MINOR.PATCH to CameraX. The MAJOR and MINOR - * version is used to map to the version of CameraX that it supports, and CameraX extension - * would only available when MAJOR version is matched with CameraX current version. The PATCH - * version does not indicate compatibility. The patch version should be incremented whenever - * the vendor library makes bug fixes or updates to the algorithm. - * - * @param version the version of CameraX library formatted as MAJOR.MINOR.PATCH-description. - * @return the version that vendor supported in this device. The MAJOR.MINOR.PATCH format - * should be used. - */ - 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 deleted file mode 100644 index 66f4a501..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/HdrImageCaptureExtenderImpl.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package androidx.camera.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; -import androidx.annotation.Nullable; - -import java.util.List; - -/** - * Stub implementation for HDR image capture use case. - * - * <p>This class should be implemented by OEM and deployed to the target devices. - * - * @since 1.0 - */ -public final class HdrImageCaptureExtenderImpl implements ImageCaptureExtenderImpl { - public HdrImageCaptureExtenderImpl() {} - - @Override - public boolean isExtensionAvailable(@NonNull String cameraId, - @Nullable CameraCharacteristics cameraCharacteristics) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void init(String cameraId, CameraCharacteristics cameraCharacteristics) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureProcessorImpl getCaptureProcessor() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public List<CaptureStageImpl> getCaptureStages() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public int getMaxCaptureStage() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void onInit(String cameraId, CameraCharacteristics cameraCharacteristics, - Context context) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void onDeInit() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl onPresetSession() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl onEnableSession() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl onDisableSession() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - 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/HdrPreviewExtenderImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/HdrPreviewExtenderImpl.java deleted file mode 100644 index 0eb4a610..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/HdrPreviewExtenderImpl.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl; - -import android.content.Context; -import android.hardware.camera2.CameraCharacteristics; -import android.util.Pair; -import android.util.Size; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import java.util.List; - -/** - * Stub implementation for HDR preview use case. - * - * <p>This class should be implemented by OEM and deployed to the target devices. - * - * @since 1.0 - */ -public final class HdrPreviewExtenderImpl implements PreviewExtenderImpl { - public HdrPreviewExtenderImpl() { - } - - @Override - public boolean isExtensionAvailable(@NonNull String cameraId, - @Nullable CameraCharacteristics cameraCharacteristics) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void init(String cameraId, CameraCharacteristics cameraCharacteristics) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl getCaptureStage() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public ProcessorType getProcessorType() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public ProcessorImpl getProcessor() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void onInit(String cameraId, CameraCharacteristics cameraCharacteristics, - Context context) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void onDeInit() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl onPresetSession() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl onEnableSession() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl onDisableSession() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public List<Pair<Integer, Size[]>> getSupportedResolutions() { - 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 deleted file mode 100644 index 571c2e38..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/ImageCaptureExtenderImpl.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.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; - -import java.util.List; - -/** - * Provides abstract methods that the OEM needs to implement to enable extensions for image capture. - * - * @since 1.0 - */ -public interface ImageCaptureExtenderImpl extends ExtenderStateListener { - /** - * Indicates whether the extension is supported on the device. - * - * @param cameraId The camera2 id string of the camera. - * @param cameraCharacteristics The {@link CameraCharacteristics} of the camera. - * @return true if the extension is supported, otherwise false - */ - boolean isExtensionAvailable(String cameraId, CameraCharacteristics cameraCharacteristics); - - /** - * Initializes the extender to be used with the specified camera. - * - * <p>This should be called before any other method on the extender. The exception is {@link - * #isExtensionAvailable(String, CameraCharacteristics)}. - * - * @param cameraId The camera2 id string of the camera. - * @param cameraCharacteristics The {@link CameraCharacteristics} of the camera. - */ - void init(String cameraId, CameraCharacteristics cameraCharacteristics); - - /** - * The processing that will be done on a set of captures to create and image with the effect. - */ - CaptureProcessorImpl getCaptureProcessor(); - - /** The set of captures that are needed to create an image with the effect. */ - List<CaptureStageImpl> getCaptureStages(); - - /** - * Returns the maximum size of the list returned by {@link #getCaptureStages()}. - * @return the maximum count. - */ - int getMaxCaptureStage(); - - /** - * Returns the customized supported resolutions. - * - * <p>Pair list composed with {@link ImageFormat} and {@link Size} array will be returned. - * - * <p>The returned resolutions should be subset of the supported sizes retrieved from - * {@link android.hardware.camera2.params.StreamConfigurationMap} for the camera device. If the - * 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. - * @since 1.1 - */ - @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/InitializerImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/InitializerImpl.java deleted file mode 100644 index 779a2ee1..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/InitializerImpl.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl; - -import android.content.Context; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import java.util.concurrent.Executor; - -/** - * Used for initializing the extensions library. - * - * @since 1.1 - */ -public class InitializerImpl { - private InitializerImpl() { - } - - /** An unknown error has occurred. */ - public static final int ERROR_UNKNOWN = 0; - - /** - * Error reported if the application version of extensions is incompatible with the on device - * library version. - */ - public static final int ERROR_INITIALIZE_VERSION_INCOMPATIBLE = 1; - - /** - * Initializes the {@link Context}. - * - * <p>Before this call has been made no calls to the extensions library should be made except - * for {@link ExtensionVersionImpl#checkApiVersion(String)}. - * - * @param version The version of the extension used by the application. - * @param context The {@link Context} of the calling application. - * @param executor The executor to run the callback on. If null then the callback will run on - * any arbitrary executor. - */ - public static void init(@NonNull String version, @NonNull Context context, - @NonNull OnExtensionsInitializedCallback callback, @Nullable Executor executor) { - throw new RuntimeException("Stub, replace with implementation."); - } - - /** - * Deinitializes the extensions to release resources. - * - * <p>After this call has been made no calls to the extensions library should be made except - * for {@link ExtensionVersionImpl#checkApiVersion(String)}. - * - * @param executor The executor to run the callback on. If null then the callback will run on - * any arbitrary executor. - */ - public static void deinit(@NonNull OnExtensionsDeinitializedCallback callback, - @Nullable Executor executor) { - throw new RuntimeException("Stub, replace with implementation."); - } - - /** - * Callback that gets called when the library has finished initializing and is ready for used. - */ - public interface OnExtensionsInitializedCallback { - /** Called if the library successfully initializes. */ - void onSuccess(); - - /** - * Called if the library is unable to successfully initialize. - * - * @param error The reason for failing to initialize. - */ - void onFailure(int error); - } - - /** - * Callback that gets called when the library has finished deinitialized. - * - * <p> Once this interface has been called then - * {@link #init(String, Context, OnExtensionsInitializedCallback, Executor)} can be called - * again regardless of whether or not the deinitialization has succeeded or failed. - */ - public interface OnExtensionsDeinitializedCallback { - /** - * Called if the library successfully deinitializes. - */ - void onSuccess(); - - /** - * Called if the library encountered some error during the deinitialization. - * - * <p>Even if the library fails to deinitialize it is now valid for - * {@link #init(String, Context, OnExtensionsInitializedCallback, Executor)} to be called - * again. - * - * @param error The reason for failing to deinitialize. - */ - void onFailure(int error); - } -} 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 deleted file mode 100755 index 3b39cf1f..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/NightImageCaptureExtenderImpl.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package androidx.camera.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; -import androidx.annotation.Nullable; - -import java.util.List; - -/** - * Stub implementation for night image capture use case. - * - * <p>This class should be implemented by OEM and deployed to the target devices. - * - * @since 1.0 - */ -public final class NightImageCaptureExtenderImpl implements ImageCaptureExtenderImpl { - public NightImageCaptureExtenderImpl() {} - - @Override - public boolean isExtensionAvailable(@NonNull String cameraId, - @Nullable CameraCharacteristics cameraCharacteristics) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void init(String cameraId, CameraCharacteristics cameraCharacteristics) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureProcessorImpl getCaptureProcessor() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public List<CaptureStageImpl> getCaptureStages() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public int getMaxCaptureStage() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void onInit(String cameraId, CameraCharacteristics cameraCharacteristics, - Context context) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void onDeInit() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl onPresetSession() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl onEnableSession() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl onDisableSession() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - 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/NightPreviewExtenderImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/NightPreviewExtenderImpl.java deleted file mode 100755 index a5809f6b..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/NightPreviewExtenderImpl.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl; - -import android.content.Context; -import android.hardware.camera2.CameraCharacteristics; -import android.util.Pair; -import android.util.Size; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import java.util.List; - -/** - * Stub implementation for night preview use case. - * - * <p>This class should be implemented by OEM and deployed to the target devices. - * - * @since 1.0 - */ -public final class NightPreviewExtenderImpl implements PreviewExtenderImpl { - public NightPreviewExtenderImpl() { - } - - @Override - public boolean isExtensionAvailable(@NonNull String cameraId, - @Nullable CameraCharacteristics cameraCharacteristics) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void init(String cameraId, CameraCharacteristics cameraCharacteristics) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl getCaptureStage() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public ProcessorType getProcessorType() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public ProcessorImpl getProcessor() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void onInit(String cameraId, CameraCharacteristics cameraCharacteristics, - Context context) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void onDeInit() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl onPresetSession() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl onEnableSession() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public CaptureStageImpl onDisableSession() { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public List<Pair<Integer, Size[]>> getSupportedResolutions() { - throw new RuntimeException("Stub, replace with implementation."); - } -} diff --git a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/PreviewExtenderImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/PreviewExtenderImpl.java deleted file mode 100644 index 43249873..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/PreviewExtenderImpl.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl; - -import android.graphics.ImageFormat; -import android.hardware.camera2.CameraCharacteristics; -import android.hardware.camera2.TotalCaptureResult; -import android.util.Pair; -import android.util.Size; - -import androidx.annotation.Nullable; - -import java.util.List; - -/** - * Provides abstract methods that the OEM needs to implement to enable extensions in the preview. - * - * @since 1.0 - */ -public interface PreviewExtenderImpl extends ExtenderStateListener { - /** The different types of the preview processing. */ - enum ProcessorType { - /** Processor which only updates the {@link CaptureStageImpl}. */ - PROCESSOR_TYPE_REQUEST_UPDATE_ONLY, - /** Processor which updates the received {@link android.media.Image}. */ - PROCESSOR_TYPE_IMAGE_PROCESSOR, - /** No processor, only a {@link CaptureStageImpl} is defined. */ - PROCESSOR_TYPE_NONE - } - - /** - * Indicates whether the extension is supported on the device. - * - * @param cameraId The camera2 id string of the camera. - * @param cameraCharacteristics The {@link CameraCharacteristics} of the camera. - * @return true if the extension is supported, otherwise false - */ - boolean isExtensionAvailable(String cameraId, CameraCharacteristics cameraCharacteristics); - - /** - * Initializes the extender to be used with the specified camera. - * - * <p>This should be called before any other method on the extender. The exception is {@link - * #isExtensionAvailable(String, CameraCharacteristics)}. - * - * @param cameraId The camera2 id string of the camera. - * @param cameraCharacteristics The {@link CameraCharacteristics} of the camera. - */ - void init(String cameraId, CameraCharacteristics cameraCharacteristics); - - /** - * The set of parameters required to produce the effect on the preview stream. - * - * <p> This will be the initial set of parameters used for the preview - * {@link android.hardware.camera2.CaptureRequest}. If the {@link ProcessorType} is defined as - * {@link ProcessorType#PROCESSOR_TYPE_REQUEST_UPDATE_ONLY} then this will be updated when - * the {@link RequestUpdateProcessorImpl#process(TotalCaptureResult)} from {@link - * #getProcessor()} has been called, this should be updated to reflect the new {@link - * CaptureStageImpl}. If the processing step returns a {@code null}, meaning the required - * parameters has not changed, then calling this will return the previous non-null value. - */ - CaptureStageImpl getCaptureStage(); - - /** The type of preview processing to use. */ - ProcessorType getProcessorType(); - - /** - * Returns a processor which only updates the {@link CaptureStageImpl}. - * - * <p>The type of processor is dependent on the return of {@link #getProcessorType()}. The - * type of ProcessorImpl returned will be according to the following table. - * - * <table> - * <tr><th> ProcessorType </th> <th> ProcessorImpl </th> </tr> - * <tr><td> PROCESSOR_TYPE_REQUEST_UPDATE_ONLY </td> <td> RequestUpdateProcessorImpl </td> </tr> - * <tr><td> PROCESSOR_TYPE_IMAGE_PROCESSOR </td> <td> PreviewImageProcessorImpl </td> </tr> - * <tr><td> PROCESSOR_TYPE_NONE </td> <td> null </td> </tr> - * </table> - */ - ProcessorImpl getProcessor(); - - /** - * Returns the customized supported resolutions. - * - * <p>Pair list composed with {@link ImageFormat} and {@link Size} array will be returned. - * - * <p>The returned resolutions should be subset of the supported sizes retrieved from - * {@link android.hardware.camera2.params.StreamConfigurationMap} for the camera device. If the - * 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. - * @since 1.1 - */ - @Nullable - List<Pair<Integer, Size[]>> getSupportedResolutions(); -} 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 deleted file mode 100644 index e7ecaa1d..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/PreviewImageProcessorImpl.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl; - -import android.graphics.ImageFormat; -import android.hardware.camera2.TotalCaptureResult; -import android.media.Image; - -/** - * Processes a single {@link Image} and {@link TotalCaptureResult} to produce an output to a - * stream. - * - * @since 1.0 - */ -public interface PreviewImageProcessorImpl extends ProcessorImpl { - /** - * Processes the requested image capture. - * - * <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 {@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/ProcessorImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/ProcessorImpl.java deleted file mode 100644 index 6be328be..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/ProcessorImpl.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl; - -import android.util.Size; -import android.view.Surface; - -/** - * Processes an input image stream and produces an output image stream. - * - * @since 1.0 - */ -public interface ProcessorImpl { - /** - * Updates where the ProcessorImpl should write the output to. - * - * @param surface The {@link Surface} that the ProcessorImpl should write data into. - * @param imageFormat The format of that the surface expects. - */ - void onOutputSurface(Surface surface, int imageFormat); - - /** - * Invoked when CameraX changes the configured output resolution. - * - * <p>After this call, {@link CaptureProcessorImpl} should expect any {@link Image} received as - * input to be at the specified resolution. - * - * @param size for the surface. - */ - void onResolutionUpdate(Size size); - - /** - * Invoked when CameraX changes the configured input image format. - * - * <p>After this call, {@link CaptureProcessorImpl} should expect any {@link Image} received as - * input to have the specified image format. - * - * @param imageFormat for the surface. - */ - void onImageFormatUpdate(int imageFormat); -} diff --git a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/RequestUpdateProcessorImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/RequestUpdateProcessorImpl.java deleted file mode 100644 index 14637d7c..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/RequestUpdateProcessorImpl.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl; - -import android.hardware.camera2.TotalCaptureResult; - -/** - * Processes a {@link TotalCaptureResult} to update a CaptureStage. - * - * @since 1.0 - */ -public interface RequestUpdateProcessorImpl extends ProcessorImpl { - /** - * Process the {@link TotalCaptureResult} to update the {@link CaptureStageImpl} - * - * @param result The metadata associated with the image. Can be null if the image and meta have - * not been synced. - * @return The updated parameters used for the repeating requests. If this is {@code null} then - * the previous parameters will be used. - */ - CaptureStageImpl process(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 deleted file mode 100644 index 86424c41..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/AdvancedExtenderImpl.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright 2021 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.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; - -/** - * Advanced OEM contract for implementing Extensions. ImageCapture/Preview Extensions are both - * implemented on this interface. - * - * <p>This advanced OEM contract empowers OEM to gain access to more Camera2 capability. This - * includes: (1) Add custom surfaces with specific formats like YUV, RAW, RAW_DEPTH. (2) Access to - * the capture request callbacks as well as all the images retrieved of various image formats. (3) - * Able to triggers single or repeating request with the capabilities to specify target surfaces, - * template id and parameters. - * - * <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>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 { - - /** - * Indicates whether the extension is supported on the device. - * - * @param cameraId The camera2 id string of the camera. - * @param characteristicsMap A map consisting of the camera ids and the - * {@link CameraCharacteristics}s. For every camera, the map - * contains at least the CameraCharacteristics for the camera id. - * If the camera is logical camera, it will also contain associated - * physical camera ids and their CameraCharacteristics. - * @return true if the extension is supported, otherwise false - */ - boolean isExtensionAvailable(String cameraId, - Map<String, CameraCharacteristics> characteristicsMap); - - /** - * Initializes the extender to be used with the specified camera. - * - * <p>This should be called before any other method on the extender. The exception is {@link - * #isExtensionAvailable}. - * - * @param cameraId The camera2 id string of the camera. - * @param characteristicsMap A map consisting of the camera ids and the - * {@link CameraCharacteristics}s. For every camera, the map - * contains at least the CameraCharacteristics for the camera id. - * If the camera is logical camera, it will also contain associated - * physical camera ids and their CameraCharacteristics. - */ - void init(String cameraId, Map<String, CameraCharacteristics> characteristicsMap); - - /** - * Returns the estimated capture latency range in milliseconds for the - * target capture resolution during the calls to - * {@link SessionProcessorImpl#startCapture}. 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 cameraId the camera id - * @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. - * @param imageFormat the image format of the capture output surface. - * @return the range of estimated minimal and maximal capture latency in milliseconds. - * Returns null if no capture latency info can be provided. - */ - Range<Long> getEstimatedCaptureLatencyRange(String cameraId, - Size captureOutputSize, int imageFormat); - - /** - * Returns supported output format/size map for preview. The format could be PRIVATE or - * YUV_420_888. OEM must support PRIVATE format at least. CameraX will only use resolutions - * for preview from the list. - * - * <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. 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); - - /** - * Returns supported output format/size map for image capture. OEM is required to support - * 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 it - * configures intermediate surfaces(YUV/RAW..) and writes the output to the output surface. - */ - Map<Integer, List<Size>> getSupportedCaptureOutputResolutions(String cameraId); - - /** - * 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 - * empty list. - */ - List<Size> getSupportedYuvAnalysisResolutions(String cameraId); - - /** - * Returns a processor for activating extension sessions. It implements all the interactions - * required for starting a extension and cleanup. - */ - SessionProcessorImpl createSessionProcessor(); -} 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 deleted file mode 100644 index 7753258b..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/AutoAdvancedExtenderImpl.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2021 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl.advanced; - -import android.annotation.SuppressLint; -import android.hardware.camera2.CameraCharacteristics; -import android.util.Range; -import android.util.Size; - -import java.util.List; -import java.util.Map; - -/** - * Stub advanced extender implementation for auto. - * - * <p>This class should be implemented by OEM and deployed to the target devices. - * - * @since 1.2 - */ -@SuppressLint("UnknownNullness") -public class AutoAdvancedExtenderImpl implements AdvancedExtenderImpl { - public AutoAdvancedExtenderImpl() { - } - - @Override - public boolean isExtensionAvailable(String cameraId, - Map<String, CameraCharacteristics> characteristicsMap) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void init(String cameraId, - Map<String, CameraCharacteristics> characteristicsMap) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public Range<Long> getEstimatedCaptureLatencyRange( - String cameraId, Size size, int imageFormat) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public Map<Integer, List<Size>> getSupportedPreviewOutputResolutions( - String cameraId) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public Map<Integer, List<Size>> getSupportedCaptureOutputResolutions( - String cameraId) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public List<Size> getSupportedYuvAnalysisResolutions( - String cameraId) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public SessionProcessorImpl createSessionProcessor() { - throw new RuntimeException("Stub, replace with implementation."); - } -} 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 deleted file mode 100644 index 91d8171b..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/BeautyAdvancedExtenderImpl.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2021 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl.advanced; - -import android.annotation.SuppressLint; -import android.hardware.camera2.CameraCharacteristics; -import android.util.Range; -import android.util.Size; - -import java.util.List; -import java.util.Map; - -/** - * Stub advanced extender implementation for beauty. - * - * <p>This class should be implemented by OEM and deployed to the target devices. - * - * @since 1.2 - */ -@SuppressLint("UnknownNullness") -public class BeautyAdvancedExtenderImpl implements AdvancedExtenderImpl { - public BeautyAdvancedExtenderImpl() { - } - - @Override - public boolean isExtensionAvailable(String cameraId, - Map<String, CameraCharacteristics> characteristicsMap) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void init(String cameraId, - Map<String, CameraCharacteristics> characteristicsMap) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public Range<Long> getEstimatedCaptureLatencyRange( - String cameraId, Size size, int imageFormat) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public Map<Integer, List<Size>> getSupportedPreviewOutputResolutions( - String cameraId) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public Map<Integer, List<Size>> getSupportedCaptureOutputResolutions( - String cameraId) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public List<Size> getSupportedYuvAnalysisResolutions( - String cameraId) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public SessionProcessorImpl createSessionProcessor() { - throw new RuntimeException("Stub, replace with implementation."); - } -} 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 deleted file mode 100644 index b05740d0..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/BokehAdvancedExtenderImpl.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2021 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl.advanced; - -import android.annotation.SuppressLint; -import android.hardware.camera2.CameraCharacteristics; -import android.util.Range; -import android.util.Size; - -import java.util.List; -import java.util.Map; - -/** - * Stub advanced extender implementation for bokeh. - * - * <p>This class should be implemented by OEM and deployed to the target devices. - * - * @since 1.2 - */ -@SuppressLint("UnknownNullness") -public class BokehAdvancedExtenderImpl implements AdvancedExtenderImpl { - public BokehAdvancedExtenderImpl() { - } - - @Override - public boolean isExtensionAvailable(String cameraId, - Map<String, CameraCharacteristics> characteristicsMap) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void init(String cameraId, - Map<String, CameraCharacteristics> characteristicsMap) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public Range<Long> getEstimatedCaptureLatencyRange( - String cameraId, Size size, int imageFormat) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public Map<Integer, List<Size>> getSupportedPreviewOutputResolutions( - String cameraId) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public Map<Integer, List<Size>> getSupportedCaptureOutputResolutions( - String cameraId) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public List<Size> getSupportedYuvAnalysisResolutions( - String cameraId) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public SessionProcessorImpl createSessionProcessor() { - throw new RuntimeException("Stub, replace with implementation."); - } -} 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 deleted file mode 100644 index 68de01b6..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/Camera2OutputConfigImpl.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2021 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.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 { - /** - * Gets thd id of this output config. The id can be used to identify the stream in vendor - * implementations. - */ - int getId(); - - /** - * Gets the surface group id. Vendor can use the surface group id to share memory between - * Surfaces. - */ - int getSurfaceGroupId(); - - /** - * Gets the physical camera id. Returns null if not specified. - */ - String getPhysicalCameraId(); - - /** - * If non-null, enable surface sharing and add the surface constructed by the return - * Camera2OutputConfig. - */ - List<Camera2OutputConfigImpl> getSurfaceSharingOutputConfigs(); -} 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 deleted file mode 100644 index 1298d804..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/Camera2OutputConfigImplBuilder.java +++ /dev/null @@ -1,227 +0,0 @@ -/* - * Copyright 2021 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl.advanced; - -import android.annotation.SuppressLint; -import android.util.Size; -import android.view.Surface; - -import java.util.ArrayList; -import java.util.List; -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 String mPhysicalCameraId; - private List<Camera2OutputConfigImpl> mSurfaceSharingConfigs; - - private Camera2OutputConfigImplBuilder(OutputConfigImplImpl outputConfig) { - mOutputConfig = outputConfig; - } - - private int getNextId() { - return sLastId.getAndIncrement(); - } - - /** - * Creates a {@link Camera2OutputConfigImpl} that represents a {@link android.media.ImageReader} - * with the given parameters. - */ - public static Camera2OutputConfigImplBuilder newImageReaderConfig( - Size size, int imageFormat, int maxImages) { - return new Camera2OutputConfigImplBuilder( - new ImageReaderOutputConfigImplImpl(size, imageFormat, maxImages)); - } - - /** - * Creates a {@link Camera2OutputConfigImpl} that represents a MultiResolutionImageReader with - * the given parameters. - */ - public static Camera2OutputConfigImplBuilder newMultiResolutionImageReaderConfig( - int imageFormat, int maxImages) { - return new Camera2OutputConfigImplBuilder( - new MultiResolutionImageReaderOutputConfigImplImpl(imageFormat, maxImages)); - } - - /** - * Creates a {@link Camera2OutputConfigImpl} that contains the Surface directly. - */ - public static Camera2OutputConfigImplBuilder newSurfaceConfig(Surface surface) { - return new Camera2OutputConfigImplBuilder(new SurfaceOutputConfigImplImpl(surface)); - } - - /** - * Adds a {@link Camera2SessionConfigImpl} to be shared with current config. - */ - public Camera2OutputConfigImplBuilder addSurfaceSharingOutputConfig( - Camera2OutputConfigImpl camera2OutputConfig) { - if (mSurfaceSharingConfigs == null) { - mSurfaceSharingConfigs = new ArrayList<>(); - } - - mSurfaceSharingConfigs.add(camera2OutputConfig); - return this; - } - - /** - * Sets a physical camera id. - */ - public Camera2OutputConfigImplBuilder setPhysicalCameraId(String physicalCameraId) { - mPhysicalCameraId = physicalCameraId; - return this; - } - - /** - * Sets surface group id. - */ - public Camera2OutputConfigImplBuilder setSurfaceGroupId(int surfaceGroupId) { - mSurfaceGroupId = surfaceGroupId; - return this; - } - - /** - * Build a {@link Camera2OutputConfigImpl} instance. - */ - public Camera2OutputConfigImpl build() { - mOutputConfig.setId(getNextId()); - mOutputConfig.setPhysicalCameraId(mPhysicalCameraId); - mOutputConfig.setSurfaceGroup(mSurfaceGroupId); - mOutputConfig.setSurfaceSharingConfigs(mSurfaceSharingConfigs); - return mOutputConfig; - } - - private static class OutputConfigImplImpl implements Camera2OutputConfigImpl { - private int mId; - private int mSurfaceGroup; - private String mPhysicalCameraId; - private List<Camera2OutputConfigImpl> mSurfaceSharingConfigs; - - OutputConfigImplImpl() { - mId = -1; - mSurfaceGroup = 0; - mPhysicalCameraId = null; - mSurfaceSharingConfigs = null; - } - - @Override - public int getId() { - return mId; - } - - @Override - public int getSurfaceGroupId() { - return mSurfaceGroup; - } - - @Override - public String getPhysicalCameraId() { - return mPhysicalCameraId; - } - - @Override - public List<Camera2OutputConfigImpl> getSurfaceSharingOutputConfigs() { - return mSurfaceSharingConfigs; - } - - public void setId(int id) { - mId = id; - } - - public void setSurfaceGroup(int surfaceGroup) { - mSurfaceGroup = surfaceGroup; - } - - public void setPhysicalCameraId(String physicalCameraId) { - mPhysicalCameraId = physicalCameraId; - } - - public void setSurfaceSharingConfigs( - List<Camera2OutputConfigImpl> surfaceSharingConfigs) { - mSurfaceSharingConfigs = surfaceSharingConfigs; - } - } - - private static class SurfaceOutputConfigImplImpl extends OutputConfigImplImpl - implements SurfaceOutputConfigImpl { - private Surface mSurface; - - SurfaceOutputConfigImplImpl(Surface surface) { - mSurface = surface; - } - - @Override - public Surface getSurface() { - return mSurface; - } - } - - private static class ImageReaderOutputConfigImplImpl extends OutputConfigImplImpl - implements ImageReaderOutputConfigImpl { - private Size mSize; - private int mImageFormat; - private int mMaxImages; - - ImageReaderOutputConfigImplImpl(Size size, int imageFormat, int maxImages) { - mSize = size; - mImageFormat = imageFormat; - mMaxImages = maxImages; - } - - @Override - public Size getSize() { - return mSize; - } - - @Override - public int getImageFormat() { - return mImageFormat; - } - - @Override - public int getMaxImages() { - return mMaxImages; - } - } - - private static class MultiResolutionImageReaderOutputConfigImplImpl extends OutputConfigImplImpl - implements MultiResolutionImageReaderOutputConfigImpl { - private int mImageFormat; - private int mMaxImages; - - MultiResolutionImageReaderOutputConfigImplImpl(int imageFormat, int maxImages) { - mImageFormat = imageFormat; - mMaxImages = maxImages; - } - - @Override - public int getImageFormat() { - return mImageFormat; - } - - @Override - public int getMaxImages() { - return mMaxImages; - } - } -} 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 deleted file mode 100644 index d1217177..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/Camera2SessionConfigImpl.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2021 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl.advanced; - -import android.annotation.SuppressLint; -import android.hardware.camera2.CaptureRequest; - -import java.util.List; -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 - * {@link android.hardware.camera2.params.OutputConfiguration}. - */ - List<Camera2OutputConfigImpl> getOutputConfigs(); - - /** - * Gets all the parameters to create the session parameters with. - */ - Map<CaptureRequest.Key<?>, Object> getSessionParameters(); - - /** - * Gets the template id used for creating {@link CaptureRequest}s to be passed in - * {@link android.hardware.camera2.params.SessionConfiguration#setSessionParameters}. - */ - int getSessionTemplateId(); -} 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 deleted file mode 100644 index 6c052d13..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/Camera2SessionConfigImplBuilder.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright 2021 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl.advanced; - - -import android.annotation.SuppressLint; -import android.hardware.camera2.CameraDevice; -import android.hardware.camera2.CaptureRequest; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -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<>(); - List<Camera2OutputConfigImpl> mCamera2OutputConfigs = new ArrayList<>(); - - public Camera2SessionConfigImplBuilder() { - } - - /** - * Adds a output config. - */ - public Camera2SessionConfigImplBuilder addOutputConfig( - Camera2OutputConfigImpl outputConfig) { - mCamera2OutputConfigs.add(outputConfig); - return this; - } - - /** - * Sets session parameters. - */ - public <T> Camera2SessionConfigImplBuilder addSessionParameter( - CaptureRequest.Key<T> key, T value) { - mSessionParameters.put(key, value); - return this; - } - - /** - * Sets the template id for session parameters request. - */ - public Camera2SessionConfigImplBuilder setSessionTemplateId(int templateId) { - mSessionTemplateId = templateId; - return this; - } - - /** - * Gets the session template id. - */ - public int getSessionTemplateId() { - return mSessionTemplateId; - } - - /** - * Gets the session parameters. - */ - public Map<CaptureRequest.Key<?>, Object> getSessionParameters() { - return mSessionParameters; - } - - /** - * Gets all the output configs. - */ - public List<Camera2OutputConfigImpl> getCamera2OutputConfigs() { - return mCamera2OutputConfigs; - } - - /** - * Builds a {@link Camera2SessionConfigImpl} instance. - */ - public Camera2SessionConfigImpl build() { - return new Camera2SessionConfigImplImpl(this); - } - - private static class Camera2SessionConfigImplImpl implements - Camera2SessionConfigImpl { - int mSessionTemplateId; - Map<CaptureRequest.Key<?>, Object> mSessionParameters; - List<Camera2OutputConfigImpl> mCamera2OutputConfigs; - - Camera2SessionConfigImplImpl(Camera2SessionConfigImplBuilder builder) { - mSessionTemplateId = builder.getSessionTemplateId(); - mSessionParameters = builder.getSessionParameters(); - mCamera2OutputConfigs = builder.getCamera2OutputConfigs(); - } - - @Override - public List<Camera2OutputConfigImpl> getOutputConfigs() { - return mCamera2OutputConfigs; - } - - @Override - public Map<CaptureRequest.Key<?>, Object> getSessionParameters() { - return mSessionParameters; - } - - @Override - public int getSessionTemplateId() { - return mSessionTemplateId; - } - } -} - 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 deleted file mode 100644 index bfd8e9a5..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/HdrAdvancedExtenderImpl.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2021 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl.advanced; - -import android.annotation.SuppressLint; -import android.hardware.camera2.CameraCharacteristics; -import android.util.Range; -import android.util.Size; - -import java.util.List; -import java.util.Map; - -/** - * Stub advanced extender implementation for hdr. - * - * <p>This class should be implemented by OEM and deployed to the target devices. - * - * @since 1.2 - */ -@SuppressLint("UnknownNullness") -public class HdrAdvancedExtenderImpl implements AdvancedExtenderImpl { - public HdrAdvancedExtenderImpl() { - } - - @Override - public boolean isExtensionAvailable(String cameraId, - Map<String, CameraCharacteristics> characteristicsMap) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void init(String cameraId, - Map<String, CameraCharacteristics> characteristicsMap) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public Range<Long> getEstimatedCaptureLatencyRange( - String cameraId, Size size, int imageFormat) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public Map<Integer, List<Size>> getSupportedPreviewOutputResolutions( - String cameraId) { - throw new RuntimeException("Stub, replace with implementation."); - } - - - @Override - public Map<Integer, List<Size>> getSupportedCaptureOutputResolutions( - String cameraId) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public List<Size> getSupportedYuvAnalysisResolutions( - String cameraId) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public SessionProcessorImpl createSessionProcessor() { - throw new RuntimeException("Stub, replace with implementation."); - } -} 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 deleted file mode 100644 index ce17c4f7..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/ImageProcessorImpl.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2021 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.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 - * to hold onto the image it should increment the reference count in this method and - * decrement it when the image is no longer needed. - * - * <p>If OEM is not closing(decrement) the image fast enough, the imageReference passed - * in this method might contain null image meaning that the Image was closed to prevent - * preview from stalling. - * - * @param outputConfigId the id of {@link Camera2OutputConfigImpl} which identifies - * corresponding Surface - * @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, - 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 deleted file mode 100644 index ca4dcafa..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/ImageReaderOutputConfigImpl.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.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. - */ - Size getSize(); - - /** - * Gets the image format of the surface. - */ - int getImageFormat(); - - /** - * Gets the capacity for TYPE_IMAGEREADER. - */ - int getMaxImages(); -} 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 deleted file mode 100644 index 95f2c3b9..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/ImageReferenceImpl.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2021 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl.advanced; - -import android.annotation.SuppressLint; -import android.media.Image; - -/** - * A Image reference container that enables the Image sharing between Camera2/CameraX and OEM - * using reference counting. The wrapped Image will be closed once the reference count - * reaches 0. - * - * <p>Implemented by Camera2/CameraX. - */ -@SuppressLint("UnknownNullness") -public interface ImageReferenceImpl { - - /** - * Increment the reference count. Returns true if the value was incremented. - * (returns false if the reference count has already reached zero.) - */ - boolean increment(); - - /** - * Decrement the reference count. Image will be closed if reference count reaches 0. - * Returns true if the value was decremented (returns false if the reference count has - * already reached zero) - */ - boolean decrement(); - - /** - * Return the Android image. This object MUST not be closed directly. - * Returns null when the reference count is zero. - */ - Image get(); -} diff --git a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/MultiResolutionImageReaderOutputConfigImpl.java b/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/MultiResolutionImageReaderOutputConfigImpl.java deleted file mode 100644 index c3ad61bc..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/MultiResolutionImageReaderOutputConfigImpl.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2021 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl.advanced; - -/** - * Surface will be created by constructing a MultiResolutionImageReader. - */ -public interface MultiResolutionImageReaderOutputConfigImpl extends Camera2OutputConfigImpl { - /** - * Gets the image format of the surface. - */ - int getImageFormat(); - - /** - * Gets the max images of the ImageReader. - */ - int getMaxImages(); -} 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 deleted file mode 100644 index fc052240..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/NightAdvancedExtenderImpl.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2021 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl.advanced; - -import android.annotation.SuppressLint; -import android.hardware.camera2.CameraCharacteristics; -import android.util.Range; -import android.util.Size; - -import java.util.List; -import java.util.Map; - -/** - * Stub advanced extender implementation for night. - * - * <p>This class should be implemented by OEM and deployed to the target devices. - * - * @since 1.2 - */ -@SuppressLint("UnknownNullness") -public class NightAdvancedExtenderImpl implements AdvancedExtenderImpl { - public NightAdvancedExtenderImpl() { - } - - @Override - public boolean isExtensionAvailable(String cameraId, - Map<String, CameraCharacteristics> characteristicsMap) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public void init(String cameraId, - Map<String, CameraCharacteristics> characteristicsMap) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public Range<Long> getEstimatedCaptureLatencyRange( - String cameraId, Size size, int imageFormat) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public Map<Integer, List<Size>> getSupportedPreviewOutputResolutions( - String cameraId) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public Map<Integer, List<Size>> getSupportedCaptureOutputResolutions( - String cameraId) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public List<Size> getSupportedYuvAnalysisResolutions( - String cameraId) { - throw new RuntimeException("Stub, replace with implementation."); - } - - @Override - public SessionProcessorImpl createSessionProcessor() { - throw new RuntimeException("Stub, replace with implementation."); - } -} 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 deleted file mode 100644 index f6920296..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/OutputSurfaceImpl.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2021 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.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. - */ - Surface getSurface(); - - /** - * Gets the size. - */ - Size getSize(); - - /** - * Gets the image format. - */ - int getImageFormat(); -} 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 deleted file mode 100644 index e70ce37f..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/RequestProcessorImpl.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright 2021 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl.advanced; - -import android.annotation.SuppressLint; -import android.hardware.camera2.CaptureFailure; -import android.hardware.camera2.CaptureRequest; -import android.hardware.camera2.CaptureResult; -import android.hardware.camera2.TotalCaptureResult; - -import java.util.List; -import java.util.Map; - -/** - * A Interface to execute requests. - */ -@SuppressLint("UnknownNullness") -public interface RequestProcessorImpl { - /** - * Sets a {@link ImageProcessorImpl} to receive {@link ImageReferenceImpl} to process. - */ - void setImageProcessor(int outputconfigId, ImageProcessorImpl imageProcessor); - - /** - * 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. - */ - 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. - */ - 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. - */ - int setRepeating(Request request, Callback callback); - - /** - * Abort captures. - */ - void abortCaptures(); - - /** - * Stop Repeating. - */ - void stopRepeating(); - - /** - * A interface representing a capture request configuration used for submitting requests in - * {@link RequestProcessorImpl}. - */ - interface Request { - /** - * Gets the target ids of {@link Camera2OutputConfigImpl} which identifies corresponding - * Surface to be the targeted for the request. - */ - List<Integer> getTargetOutputConfigIds(); - - /** - * Gets all the parameters. - */ - Map<CaptureRequest.Key<?>, Object> getParameters(); - - /** - * Gets the template id. - */ - Integer getTemplateId(); - } - - /** - * Callback to be invoked during the capture. - */ - interface Callback { - void onCaptureStarted( - Request request, - long frameNumber, - long timestamp); - - void onCaptureProgressed( - Request request, - CaptureResult partialResult); - - void onCaptureCompleted( - Request request, - TotalCaptureResult totalCaptureResult); - - void onCaptureFailed( - Request request, - CaptureFailure captureFailure); - - void onCaptureBufferLost( - Request request, - long frameNumber, - int outputStreamId); - - void onCaptureSequenceCompleted(int sequenceId, long frameNumber); - - void onCaptureSequenceAborted(int sequenceId); - - } -} 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 deleted file mode 100644 index 9ac3eeb7..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/SessionProcessorImpl.java +++ /dev/null @@ -1,249 +0,0 @@ -/* - * Copyright 2021 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.extensions.impl.advanced; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.hardware.camera2.CameraCharacteristics; -import android.hardware.camera2.CaptureRequest; -import android.view.Surface; - -import java.util.Map; - -/** - * Interface for activating extension sessions. - * - * <p><pre> - * The flow of a extension session. - * (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. - * - * (2) {@link #onCaptureSessionStart}: It is called after CameraCaptureSession is configured. - * A {@link RequestProcessorImpl} is passed for vendor to send repeating requests and - * 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. - * - * (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 - * specified in {@link #initSession}. - * - * (5) {@link #onCaptureSessionEnd}: It is called right BEFORE CameraCaptureSession.close() is - * called. - * - * (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 - * would be able to allocate resources here. After onInit() 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. - * - * <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. - * - * (2) Use surface sharing with other surface by calling - * {@link Camera2OutputConfigImplBuilder#addSurfaceSharingOutputConfig(Camera2OutputConfigImpl)} - * to add the output surface to the other {@link Camera2OutputConfigImpl}. - * - * (3) Process output from other surfaces (RAW, YUV..) and write the result to the output - * surface. The output surface won't be contained in the returned - * {@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. - * - * @param previewSurfaceConfig output surface for preview - * @param imageCaptureSurfaceConfig output surface for image capture. - * @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 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 - * produce a valid camera capture session. - */ - Camera2SessionConfigImpl initSession( - String cameraId, - Map<String, CameraCharacteristics> cameraCharacteristicsMap, - Context context, - OutputSurfaceImpl previewSurfaceConfig, - OutputSurfaceImpl imageCaptureSurfaceConfig, - 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. - */ - void deInitSession(); - - /** - * CameraX / Camera2 would call these API’s to pass parameters from the app to the OEM. It’s - * expected that the OEM would (eventually) update the repeating request if the keys are - * supported. Setting a value to null explicitly un-sets the value. - */ - void setParameters(Map<CaptureRequest.Key<?>, Object> parameters); - - /** - * This will be invoked once after the {@link android.hardware.camera2.CameraCaptureSession} - * has been created. {@link RequestProcessorImpl} is passed for OEM to submit single - * requests or set repeating requests. This ExtensionRequestProcessor will be valid to use - * until onCaptureSessionEnd is called. - */ - void onCaptureSessionStart(RequestProcessorImpl requestProcessor); - - /** - * This will be invoked before the {@link android.hardware.camera2.CameraCaptureSession} is - * closed. {@link RequestProcessorImpl} passed in onCaptureSessionStart will no longer - * accept any requests after onCaptureSessionEnd() returns. - */ - void onCaptureSessionEnd(); - - /** - * 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. - * - * @param callback a callback to report the status. - * @return the id of the capture sequence. - */ - int startRepeating(CaptureCallback callback); - - /** - * 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. - */ - void stopRepeating(); - - /** - * Start a multi-frame capture. - * - * When the capture is completed, {@link CaptureCallback#onCaptureSequenceCompleted} - * is called and {@code OnImageAvailableListener#onImageAvailable} - * will also be called on the ImageReader that creates the image capture output surface. - * - * <p>Only one capture can perform at a time. Starting a capture when another capture is running - * will cause onCaptureFailed to be called immediately. - * - * @param callback a callback to report the status. - * @return the id of the capture sequence. - */ - int startCapture(CaptureCallback callback); - - /** - * Abort capture tasks. - */ - void abortCapture(int captureSequenceId); - - /** - * Callback for notifying the status of {@link #startCapture(CaptureCallback)} and - * {@link #startRepeating(CaptureCallback)}. - */ - interface CaptureCallback { - /** - * This method is called when the camera device has started capturing the initial input - * image. - * - * For a multi-frame capture, the method is called when the - * CameraCaptureSession.CaptureCallback onCaptureStarted of first frame is called and its - * timestamp is directly forwarded to timestamp parameter of - * this method. - * - * @param captureSequenceId id of the current capture sequence - * @param timestamp the timestamp at start of capture for repeating - * request or the timestamp at start of capture of the - * first frame in a multi-frame capture, in nanoseconds. - */ - void onCaptureStarted(int captureSequenceId, long timestamp); - - /** - * This method is called when an image (or images in case of multi-frame - * capture) is captured and device-specific extension processing is triggered. - * - * @param captureSequenceId id of the current capture sequence - */ - void onCaptureProcessStarted(int captureSequenceId); - - /** - * This method is called instead of - * {@link #onCaptureProcessStarted} when the camera device failed - * to produce the required input for the device-specific extension. The - * cause could be a failed camera capture request, a failed - * capture result or dropped camera frame. - * - * @param captureSequenceId id of the current capture sequence - */ - void onCaptureFailed(int captureSequenceId); - - /** - * This method is called independently of the others in the CaptureCallback, when a capture - * sequence finishes. - * - * <p>In total, there will be at least one - * {@link #onCaptureProcessStarted}/{@link #onCaptureFailed} - * invocation before this callback is triggered. If the capture - * sequence is aborted before any requests have begun processing, - * {@link #onCaptureSequenceAborted} is invoked instead.</p> - * - * @param captureSequenceId id of the current capture sequence - */ - void onCaptureSequenceCompleted(int captureSequenceId); - - /** - * This method is called when a capture sequence aborts. - * - * @param captureSequenceId id of the current capture sequence - */ - void onCaptureSequenceAborted(int captureSequenceId); - } -} 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 deleted file mode 100644 index 7b8d83c1..00000000 --- a/camera2/extensions/stub/src/main/java/androidx/camera/extensions/impl/advanced/SurfaceOutputConfigImpl.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2021 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.camera.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. - */ - Surface getSurface(); -} diff --git a/camera2/portability/Android.bp b/camera2/portability/Android.bp index 10d24fc7..fa7bc056 100644 --- a/camera2/portability/Android.bp +++ b/camera2/portability/Android.bp @@ -12,10 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -package { - default_applicable_licenses: ["Android-Apache-2.0"], -} - java_library { name: "android-ex-camera2-portability", sdk_version: "current", diff --git a/camera2/portability/tests/Android.bp b/camera2/portability/tests/Android.bp index d81c9bc7..09ccd899 100644 --- a/camera2/portability/tests/Android.bp +++ b/camera2/portability/tests/Android.bp @@ -12,10 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -package { - default_applicable_licenses: ["Android-Apache-2.0"], -} - android_test { name: "android-ex-camera2-portability-tests", sdk_version: "current", diff --git a/camera2/public/Android.bp b/camera2/public/Android.bp index 0ede9c4b..80d723b2 100644 --- a/camera2/public/Android.bp +++ b/camera2/public/Android.bp @@ -12,10 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -package { - default_applicable_licenses: ["Android-Apache-2.0"], -} - java_library { name: "android-ex-camera2", sdk_version: "current", diff --git a/camera2/public/src/com/android/ex/camera2/blocking/BlockingExtensionSessionCallback.java b/camera2/public/src/com/android/ex/camera2/blocking/BlockingExtensionSessionCallback.java deleted file mode 100644 index d191ef7c..00000000 --- a/camera2/public/src/com/android/ex/camera2/blocking/BlockingExtensionSessionCallback.java +++ /dev/null @@ -1,205 +0,0 @@ -/* - * Copyright 2020 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.ex.camera2.blocking; - -import android.hardware.camera2.CameraExtensionSession; -import android.os.ConditionVariable; -import android.util.Log; - -import com.android.ex.camera2.exceptions.TimeoutRuntimeException; -import com.android.ex.camera2.utils.StateChangeListener; -import com.android.ex.camera2.utils.StateWaiter; - -import java.util.concurrent.Future; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; - - -/** - * A camera extension session listener that implements blocking operations on session state changes. - * - * <p>Provides a waiter that can be used to block until the next unobserved state of the - * requested type arrives.</p> - * - * <p>Pass-through all StateCallback changes to the proxy.</p> - * - * @see #getStateWaiter - */ -public class BlockingExtensionSessionCallback extends CameraExtensionSession.StateCallback { - /** - * Session is configured, ready for captures - */ - public static final int SESSION_CONFIGURED = 0; - - /** - * Session has failed to configure, can't do any captures - */ - public static final int SESSION_CONFIGURE_FAILED = 1; - - /** - * Session is closed - */ - public static final int SESSION_CLOSED = 2; - - private static final int NUM_STATES = 3; - - /* - * Private fields - */ - private static final String TAG = "BlockingExtensionSessionCallback"; - private static final boolean VERBOSE = Log.isLoggable(TAG, Log.VERBOSE); - - private final CameraExtensionSession.StateCallback mProxy; - private final SessionFuture mSessionFuture = new SessionFuture(); - - private final StateWaiter mStateWaiter = new StateWaiter(sStateNames); - private final StateChangeListener mStateChangeListener = mStateWaiter.getListener(); - - private static final String[] sStateNames = { - "SESSION_CONFIGURED", - "SESSION_CONFIGURE_FAILED", - "SESSION_CLOSED" - }; - - /** - * Create a blocking session listener without forwarding the session listener invocations - * to another session listener. - */ - public BlockingExtensionSessionCallback() { - mProxy = null; - } - - /** - * Create a blocking session listener; forward original listener invocations - * into {@code listener}. - * - * @param listener a non-{@code null} listener to forward invocations into - * - * @throws NullPointerException if {@code listener} was {@code null} - */ - public BlockingExtensionSessionCallback(CameraExtensionSession.StateCallback listener) { - if (listener == null) { - throw new NullPointerException("listener must not be null"); - } - mProxy = listener; - } - - /** - * Acquire the state waiter; can be used to block until a set of state transitions have - * been reached. - * - * <p>Only one thread should wait at a time.</p> - */ - public StateWaiter getStateWaiter() { - return mStateWaiter; - } - - /** - * Return session if already have it; otherwise wait until any of the session listener - * invocations fire and the session is available. - * - * <p>Does not consume any of the states from the state waiter.</p> - * - * @param timeoutMs how many milliseconds to wait for - * @return a non-{@code null} - * {@link android.example.com.cameraextensionbasic.CameraExtensionSession} instance - * - * @throws TimeoutRuntimeException if waiting for more than {@long timeoutMs} - */ - public CameraExtensionSession waitAndGetSession(long timeoutMs) { - try { - return mSessionFuture.get(timeoutMs, TimeUnit.MILLISECONDS); - } catch (TimeoutException e) { - throw new TimeoutRuntimeException( - String.format("Failed to get session after %s milliseconds", timeoutMs), e); - } - } - - /* - * CameraExtensionSession.StateCallback implementation - */ - - @Override - public void onClosed(CameraExtensionSession session) { - mSessionFuture.setSession(session); - if (mProxy != null) mProxy.onClosed(session); - mStateChangeListener.onStateChanged(SESSION_CLOSED); - } - - @Override - public void onConfigured(CameraExtensionSession session) { - mSessionFuture.setSession(session); - if (mProxy != null) { - mProxy.onConfigured(session); - } - mStateChangeListener.onStateChanged(SESSION_CONFIGURED); - } - - @Override - public void onConfigureFailed(CameraExtensionSession session) { - mSessionFuture.setSession(session); - if (mProxy != null) { - mProxy.onConfigureFailed(session); - } - mStateChangeListener.onStateChanged(SESSION_CONFIGURE_FAILED); - } - - private static class SessionFuture implements Future<CameraExtensionSession> { - private volatile CameraExtensionSession mSession; - ConditionVariable mCondVar = new ConditionVariable(/*opened*/false); - - public void setSession(CameraExtensionSession session) { - mSession = session; - mCondVar.open(); - } - - @Override - public boolean cancel(boolean mayInterruptIfRunning) { - return false; // don't allow canceling this task - } - - @Override - public boolean isCancelled() { - return false; // can never cancel this task - } - - @Override - public boolean isDone() { - return mSession != null; - } - - @Override - public CameraExtensionSession get() { - mCondVar.block(); - return mSession; - } - - @Override - public CameraExtensionSession get(long timeout, TimeUnit unit) throws TimeoutException { - long timeoutMs = unit.convert(timeout, TimeUnit.MILLISECONDS); - if (!mCondVar.block(timeoutMs)) { - throw new TimeoutException( - "Failed to receive session after " + timeout + " " + unit); - } - - if (mSession == null) { - throw new AssertionError(); - } - return mSession; - } - - } -} diff --git a/camera2/utils/Android.bp b/camera2/utils/Android.bp index 8dc4cd30..85ef75c6 100644 --- a/camera2/utils/Android.bp +++ b/camera2/utils/Android.bp @@ -12,10 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -package { - default_applicable_licenses: ["Android-Apache-2.0"], -} - java_library { name: "android-ex-camera2-utils", sdk_version: "current", diff --git a/camera2/utils/tests/Android.bp b/camera2/utils/tests/Android.bp index 1ef9d05e..6be7f390 100644 --- a/camera2/utils/tests/Android.bp +++ b/camera2/utils/tests/Android.bp @@ -12,10 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -package { - default_applicable_licenses: ["Android-Apache-2.0"], -} - android_test { name: "android-ex-camera2-utils-tests", sdk_version: "current", diff --git a/common/Android.bp b/common/Android.bp index 16cc7fd5..e37d3b85 100644 --- a/common/Android.bp +++ b/common/Android.bp @@ -15,10 +15,6 @@ // Note: the source code is in java/, not src/, because this code is also part of // the framework library, and build/core/pathmap.mk expects a java/ subdirectory. -package { - default_applicable_licenses: ["Android-Apache-2.0"], -} - java_library_static { name: "android-common", sdk_version: "8", diff --git a/common/tests/Android.bp b/common/tests/Android.bp index b54c8998..d4d8eb32 100644 --- a/common/tests/Android.bp +++ b/common/tests/Android.bp @@ -12,10 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -package { - default_applicable_licenses: ["Android-Apache-2.0"], -} - android_test { name: "AndroidCommonTests", certificate: "platform", diff --git a/common/tools/make-iana-tld-pattern.py b/common/tools/make-iana-tld-pattern.py index dea9f4e7..9847b95e 100755 --- a/common/tools/make-iana-tld-pattern.py +++ b/common/tools/make-iana-tld-pattern.py @@ -1,15 +1,12 @@ #!/usr/bin/env python from urllib2 import urlopen -from datetime import date - -URL='http://data.iana.org/TLD/tlds-alpha-by-domain.txt' TLD_PREFIX = r""" /** * Regular expression to match all IANA top-level domains. - * List accurate as of {gen_date}. List taken from: - * {url} + * List accurate as of 2011/07/18. List taken from: + * http://data.iana.org/TLD/tlds-alpha-by-domain.txt * This pattern is auto-generated by frameworks/ex/common/tools/make-iana-tld-pattern.py */ public static final String TOP_LEVEL_DOMAIN_STR = @@ -19,8 +16,8 @@ TLD_SUFFIX = '";' URL_PREFIX = r""" /** * Regular expression to match all IANA top-level domains for WEB_URL. - * List accurate as of {gen_date}. List taken from: - * {url} + * List accurate as of 2011/07/18. List taken from: + * http://data.iana.org/TLD/tlds-alpha-by-domain.txt * This pattern is auto-generated by frameworks/ex/common/tools/make-iana-tld-pattern.py */ public static final String TOP_LEVEL_DOMAIN_STR_FOR_WEB_URL = @@ -135,7 +132,7 @@ def getBucket(buckets, line): return bucket def makePattern(prefix, suffix, buckets, isWebUrl=False): - output = prefix.format(gen_date = date.today(), url=URL) + output = prefix output += getBucket(buckets, 'a').dump(isFirst=True, isWebUrl=isWebUrl) @@ -154,7 +151,7 @@ def makePattern(prefix, suffix, buckets, isWebUrl=False): print output if __name__ == "__main__": - f = urlopen(URL) + f = urlopen('http://data.iana.org/TLD/tlds-alpha-by-domain.txt') domains = f.readlines() f.close() diff --git a/framesequence/Android.bp b/framesequence/Android.bp index 9a6d0f55..c3aa9ef5 100644 --- a/framesequence/Android.bp +++ b/framesequence/Android.bp @@ -14,10 +14,6 @@ // limitations under the License. // -package { - default_applicable_licenses: ["Android-Apache-2.0"], -} - java_library { name: "android-common-framesequence", sdk_version: "8", diff --git a/framesequence/jni/Android.bp b/framesequence/jni/Android.bp index 13ae47af..f2fd41b5 100644 --- a/framesequence/jni/Android.bp +++ b/framesequence/jni/Android.bp @@ -14,10 +14,6 @@ // limitations under the License. // -package { - default_applicable_licenses: ["Android-Apache-2.0"], -} - cc_library_shared { name: "libframesequence", @@ -31,7 +27,6 @@ cc_library_shared { // endif static_libs: ["libgif"], - header_libs: ["jni_headers"], include_dirs: ["external/giflib"], srcs: [ "BitmapDecoderJNI.cpp", diff --git a/framesequence/samples/FrameSequenceSamples/Android.bp b/framesequence/samples/FrameSequenceSamples/Android.bp index f6bd93f0..24458dfa 100644 --- a/framesequence/samples/FrameSequenceSamples/Android.bp +++ b/framesequence/samples/FrameSequenceSamples/Android.bp @@ -12,10 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -package { - default_applicable_licenses: ["Android-Apache-2.0"], -} - android_app { name: "FrameSequenceSample", |