diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2023-04-02 04:15:57 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2023-04-02 04:15:57 +0000 |
commit | ac1f4e191c1c4bbb959065f289d59cdb7e0ade83 (patch) | |
tree | 11229fcbed31972caf6a6a66f45f629a548f86a5 | |
parent | d9af75e9404044bd50059b043f8f54ab2c19fa46 (diff) | |
parent | fc6f5c6fae3c1ef8cdf53f64fe2ec6c41877ef36 (diff) | |
download | ex-ac1f4e191c1c4bbb959065f289d59cdb7e0ade83.tar.gz |
Merge "Fixed Camera Extensions service based sample CTS failures" am: d187a93f4d am: fc6f5c6fae
Original change: https://android-review.googlesource.com/c/platform/frameworks/ex/+/2496360
Change-Id: I432aa87d22475b95e3deb973a6d4e3deba5c6436
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
3 files changed, 61 insertions, 61 deletions
diff --git a/camera2/extensions/service_based_sample/extensions_service/src/com/android/oemextensions/AdvancedExtenderImplStub.java b/camera2/extensions/service_based_sample/extensions_service/src/com/android/oemextensions/AdvancedExtenderImplStub.java index a10c1659..960f9a4c 100644 --- a/camera2/extensions/service_based_sample/extensions_service/src/com/android/oemextensions/AdvancedExtenderImplStub.java +++ b/camera2/extensions/service_based_sample/extensions_service/src/com/android/oemextensions/AdvancedExtenderImplStub.java @@ -31,6 +31,7 @@ import android.util.Log; import android.util.Size; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.camera.extensions.impl.service.CameraMetadataWrapper; import androidx.camera.extensions.impl.service.IAdvancedExtenderImpl; import androidx.camera.extensions.impl.service.ISessionProcessorImpl; @@ -41,6 +42,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; @@ -49,7 +51,7 @@ public class AdvancedExtenderImplStub extends IAdvancedExtenderImpl.Stub { private Context mContext; private int mExtensionType; private String mCurrentCameraId; - private Map<String, CameraCharacteristics> mCharacteristicsMap = new HashMap<>(); + private CameraCharacteristics mCameraCharacteristics; /** * Construct the AdvancedExtenderImplStub instance. @@ -74,12 +76,18 @@ public class AdvancedExtenderImplStub extends IAdvancedExtenderImpl.Stub { @Override public void init(@NonNull String cameraId) throws RemoteException { mCurrentCameraId = cameraId; + try { + CameraManager cameraManager = mContext.getSystemService(CameraManager.class); + mCameraCharacteristics = cameraManager.getCameraCharacteristics(cameraId); + } catch (CameraAccessException e) { + throw new IllegalStateException("Cannot get CameraCharacteristics", e); + } } @Override @NonNull public LatencyRange getEstimatedCaptureLatencyRange(@NonNull String cameraId, - @NonNull androidx.camera.extensions.impl.service.Size outputSize, + @Nullable androidx.camera.extensions.impl.service.Size outputSize, int format) throws RemoteException { Log.d(TAG, "getEstimatedCaptureLatencyRange format" + format); @@ -89,22 +97,6 @@ public class AdvancedExtenderImplStub extends IAdvancedExtenderImpl.Stub { return latencyRange; } - private CameraCharacteristics getCameraCharacteristics(String cameraId) { - CameraCharacteristics characteristics = mCharacteristicsMap.get(cameraId); - if (characteristics != null) { - return characteristics; - } - try { - CameraManager cameraManager = mContext.getSystemService(CameraManager.class); - characteristics = cameraManager.getCameraCharacteristics(cameraId); - mCharacteristicsMap.put(cameraId, characteristics); - return characteristics; - } catch (CameraAccessException e) { - Log.e(TAG, "Cannot get CameraCharacteristics", e); - return null; - } - } - private static SizeList getSupportedSizeByFormat( CameraCharacteristics cameraCharacteristics, int imageFormat) { StreamConfigurationMap streamConfigMap = @@ -128,27 +120,18 @@ public class AdvancedExtenderImplStub extends IAdvancedExtenderImpl.Stub { @NonNull public List<SizeList> getSupportedPreviewOutputResolutions(@NonNull String cameraId) throws RemoteException { - CameraCharacteristics cameraCharacteristics = getCameraCharacteristics(cameraId); - if (cameraCharacteristics == null) { - return Collections.emptyList(); - } - return Arrays.asList( - getSupportedSizeByFormat(cameraCharacteristics, ImageFormat.PRIVATE)); + getSupportedSizeByFormat(mCameraCharacteristics, ImageFormat.PRIVATE)); } @Override @NonNull public List<SizeList> getSupportedCaptureOutputResolutions(@NonNull String cameraId) throws RemoteException { - CameraCharacteristics cameraCharacteristics = getCameraCharacteristics(cameraId); - if (cameraCharacteristics == null) { - return Collections.emptyList(); - } return Arrays.asList( - getSupportedSizeByFormat(cameraCharacteristics, + getSupportedSizeByFormat(mCameraCharacteristics, ImageFormat.JPEG), - getSupportedSizeByFormat(cameraCharacteristics, + getSupportedSizeByFormat(mCameraCharacteristics, ImageFormat.YUV_420_888)); } @@ -156,25 +139,20 @@ public class AdvancedExtenderImplStub extends IAdvancedExtenderImpl.Stub { @NonNull public List<SizeList> getSupportedYuvAnalysisResolutions(@NonNull String cameraId) throws RemoteException { - CameraCharacteristics cameraCharacteristics = getCameraCharacteristics(cameraId); - if (cameraCharacteristics == null) { - return Collections.emptyList(); - } - return Arrays.asList( - getSupportedSizeByFormat(cameraCharacteristics, ImageFormat.YUV_420_888)); + getSupportedSizeByFormat(mCameraCharacteristics, ImageFormat.YUV_420_888)); } @Override @NonNull public ISessionProcessorImpl getSessionProcessor() throws RemoteException { Log.d(TAG, "getSessionProcessor"); - return new SimpleSessionProcessorStub(getCameraCharacteristics(mCurrentCameraId), - getSupportedCaptureRequestKeys(mCurrentCameraId).keySet(), - getSupportedCaptureResultKeys(mCurrentCameraId).keySet()); + return new SimpleSessionProcessorStub(mCameraCharacteristics, + getSupportedCaptureRequestKeys().keySet(), + getSupportedCaptureResultKeys().keySet()); } - private Map<CaptureRequest.Key, Object> getSupportedCaptureRequestKeys(String cameraId) { + private Map<CaptureRequest.Key, Object> getSupportedCaptureRequestKeys() { Map<CaptureRequest.Key, Object> map = new HashMap<>(); map.put(CaptureRequest.CONTROL_ZOOM_RATIO, 1.0f /* don't care, must not be null */); @@ -188,8 +166,7 @@ public class AdvancedExtenderImplStub extends IAdvancedExtenderImpl.Stub { (byte)0 /* don't care, must not be null */); map.put(CaptureRequest.JPEG_ORIENTATION, 0 /* don't care, must not be null */); - if (isAfAutoSupported(cameraId)) { - Log.e("AAAAA", "support AF: cameraid=" + cameraId); + if (isAfAutoSupported()) { map.put(CaptureRequest.CONTROL_AF_TRIGGER, 0 /* don't care, must not be null */); map.put(CaptureRequest.CONTROL_AF_MODE, @@ -197,10 +174,21 @@ public class AdvancedExtenderImplStub extends IAdvancedExtenderImpl.Stub { map.put(CaptureRequest.CONTROL_AF_REGIONS, new MeteringRectangle[0] /* don't care, must not be null */); } + + + // Filters out unsupported keys + List<CaptureRequest.Key<?>> camera2SupportKeys= + mCameraCharacteristics.getAvailableCaptureRequestKeys(); + for (CaptureRequest.Key key : new HashSet<>(map.keySet())) { + if (!camera2SupportKeys.contains(key)) { + map.remove(key); + } + } + return map; } - private Map<CaptureResult.Key, Object> getSupportedCaptureResultKeys(String cameraId) { + private Map<CaptureResult.Key, Object> getSupportedCaptureResultKeys() { Map<CaptureResult.Key, Object> map = new HashMap<>(); map.put(CaptureResult.CONTROL_ZOOM_RATIO, 1.0f /* don't care, must not be null */); @@ -214,7 +202,7 @@ public class AdvancedExtenderImplStub extends IAdvancedExtenderImpl.Stub { (byte)0 /* don't care, must not be null */); map.put(CaptureResult.JPEG_ORIENTATION, 0 /* don't care, must not be null */); - if (isAfAutoSupported(cameraId)) { + if (isAfAutoSupported()) { map.put(CaptureResult.CONTROL_AF_REGIONS, new MeteringRectangle[0] /* don't care, must not be null */); map.put(CaptureResult.CONTROL_AF_TRIGGER, @@ -224,11 +212,21 @@ public class AdvancedExtenderImplStub extends IAdvancedExtenderImpl.Stub { map.put(CaptureResult.CONTROL_AF_STATE, 0 /* don't care, must not be null */); } + + // Filters out unsupported keys + List<CaptureResult.Key<?>> camera2SupportKeys= + mCameraCharacteristics.getAvailableCaptureResultKeys(); + for (CaptureResult.Key key : new HashSet<>(map.keySet())) { + if (!camera2SupportKeys.contains(key)) { + map.remove(key); + } + } return map; } - private boolean isAfAutoSupported(String cameraId) { - int[] afModes = getCameraCharacteristics(cameraId) + + private boolean isAfAutoSupported() { + int[] afModes = mCameraCharacteristics .get(CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES); if (afModes == null) { return false; @@ -243,11 +241,11 @@ public class AdvancedExtenderImplStub extends IAdvancedExtenderImpl.Stub { } @Override - public CameraMetadataWrapper getAvailableCaptureRequestKeys(String cameraId) + public CameraMetadataWrapper getAvailableCaptureRequestKeys() throws RemoteException { CameraMetadataWrapper cameraMetadataWrapper = - new CameraMetadataWrapper(getCameraCharacteristics(cameraId)); - Map<CaptureRequest.Key, Object> keysmap = getSupportedCaptureRequestKeys(cameraId); + new CameraMetadataWrapper(mCameraCharacteristics); + Map<CaptureRequest.Key, Object> keysmap = getSupportedCaptureRequestKeys(); for (CaptureRequest.Key key : keysmap.keySet()) { cameraMetadataWrapper.set(key, keysmap.get(key)); } @@ -256,11 +254,11 @@ public class AdvancedExtenderImplStub extends IAdvancedExtenderImpl.Stub { } @Override - public CameraMetadataWrapper getAvailableCaptureResultKeys(String cameraId) + public CameraMetadataWrapper getAvailableCaptureResultKeys() throws RemoteException { CameraMetadataWrapper cameraMetadataWrapper = - new CameraMetadataWrapper(getCameraCharacteristics(cameraId)); - Map<CaptureResult.Key, Object> keysmap = getSupportedCaptureResultKeys(cameraId); + new CameraMetadataWrapper(mCameraCharacteristics); + Map<CaptureResult.Key, Object> keysmap = getSupportedCaptureResultKeys(); for (CaptureResult.Key key : keysmap.keySet()) { cameraMetadataWrapper.set(key, keysmap.get(key)); } diff --git a/camera2/extensions/service_based_sample/oem_library/src/java/androidx/camera/extensions/impl/service/IAdvancedExtenderImpl.aidl b/camera2/extensions/service_based_sample/oem_library/src/java/androidx/camera/extensions/impl/service/IAdvancedExtenderImpl.aidl index 7042c0b8..35956093 100644 --- a/camera2/extensions/service_based_sample/oem_library/src/java/androidx/camera/extensions/impl/service/IAdvancedExtenderImpl.aidl +++ b/camera2/extensions/service_based_sample/oem_library/src/java/androidx/camera/extensions/impl/service/IAdvancedExtenderImpl.aidl @@ -31,6 +31,6 @@ interface IAdvancedExtenderImpl { @nullable List<SizeList> getSupportedCaptureOutputResolutions(in String cameraId); @nullable List<SizeList> getSupportedYuvAnalysisResolutions(in String cameraId); ISessionProcessorImpl getSessionProcessor(); - CameraMetadataWrapper getAvailableCaptureRequestKeys(in String cameraId); - CameraMetadataWrapper getAvailableCaptureResultKeys(in String cameraId); + CameraMetadataWrapper getAvailableCaptureRequestKeys(); + CameraMetadataWrapper getAvailableCaptureResultKeys(); }
\ No newline at end of file diff --git a/camera2/extensions/service_based_sample/oem_library/src/java/androidx/camera/extensions/impl/serviceforward/ForwardAdvancedExtender.java b/camera2/extensions/service_based_sample/oem_library/src/java/androidx/camera/extensions/impl/serviceforward/ForwardAdvancedExtender.java index 32a765b9..40f2c136 100644 --- a/camera2/extensions/service_based_sample/oem_library/src/java/androidx/camera/extensions/impl/serviceforward/ForwardAdvancedExtender.java +++ b/camera2/extensions/service_based_sample/oem_library/src/java/androidx/camera/extensions/impl/serviceforward/ForwardAdvancedExtender.java @@ -88,13 +88,15 @@ public class ForwardAdvancedExtender implements AdvancedExtenderImpl { @Override @Nullable public Range<Long> getEstimatedCaptureLatencyRange(@NonNull String cameraId, - @NonNull Size captureOutputSize, + @Nullable Size captureOutputSize, int imageFormat) { try { - androidx.camera.extensions.impl.service.Size size = - new androidx.camera.extensions.impl.service.Size(); - size.width = captureOutputSize.getWidth(); - size.height = captureOutputSize.getHeight(); + androidx.camera.extensions.impl.service.Size size = null; + if (captureOutputSize != null) { + size = new androidx.camera.extensions.impl.service.Size(); + size.width = captureOutputSize.getWidth(); + size.height = captureOutputSize.getHeight(); + } LatencyRange latencyRange = mIAdvancedExtender.getEstimatedCaptureLatencyRange(cameraId, size, imageFormat); @@ -209,7 +211,7 @@ public class ForwardAdvancedExtender implements AdvancedExtenderImpl { public List<CaptureRequest.Key> getAvailableCaptureRequestKeys() { try { CameraMetadataWrapper cameraMetadataWrapper - = mIAdvancedExtender.getAvailableCaptureRequestKeys(mCameraId); + = mIAdvancedExtender.getAvailableCaptureRequestKeys(); CaptureRequest captureRequest = cameraMetadataWrapper.toCaptureRequest(); @@ -229,7 +231,7 @@ public class ForwardAdvancedExtender implements AdvancedExtenderImpl { public List<CaptureResult.Key> getAvailableCaptureResultKeys() { try { CameraMetadataWrapper cameraMetadataWrapper - = mIAdvancedExtender.getAvailableCaptureResultKeys(mCameraId); + = mIAdvancedExtender.getAvailableCaptureResultKeys(); TotalCaptureResult captureResult = cameraMetadataWrapper.toTotalCaptureResult(); List<CaptureResult.Key> result = new ArrayList<>(); |