diff options
author | Jayant Chowdhary <jchowdhary@google.com> | 2022-07-19 02:12:01 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2022-07-19 02:12:01 +0000 |
commit | 749c93e62c6f990ec3f41a93169a9bb0c67bda33 (patch) | |
tree | 48acef82d4b3bc542509006a5f792e08a1571d48 | |
parent | 0167f1197628d9721e4d372e77b688abaf6e93cc (diff) | |
parent | 2362155b98328328464897a9621e51916aebedd6 (diff) | |
download | cts-749c93e62c6f990ec3f41a93169a9bb0c67bda33.tar.gz |
Merge changes from topic "its-preview-stab-size" into stage-aosp-tm-ts-dev
* changes:
ITS: Depend on image area for calculating center offset threshold.
ITS scene4 preview stabilization: Update MAX_DIMENSION_SIZE to match updated mandatory streams.
-rw-r--r-- | apps/CameraITS/tests/scene4/test_preview_stabilization_fov.py | 30 | ||||
-rw-r--r-- | apps/CtsVerifier/src/com/android/cts/verifier/camera/its/ItsService.java | 4 |
2 files changed, 19 insertions, 15 deletions
diff --git a/apps/CameraITS/tests/scene4/test_preview_stabilization_fov.py b/apps/CameraITS/tests/scene4/test_preview_stabilization_fov.py index 95cf0cb3b0c..2781f18805e 100644 --- a/apps/CameraITS/tests/scene4/test_preview_stabilization_fov.py +++ b/apps/CameraITS/tests/scene4/test_preview_stabilization_fov.py @@ -35,9 +35,9 @@ _MAX_STABILIZED_RADIUS_RATIO = 1.2 # radius of circle in stabilized preview _ROUNDESS_DELTA_THRESHOLD = 0.05 _MAX_CENTER_THRESHOLD_PERCENT = 0.075 -_MAX_DIMENSION_SIZE = (1920, 1080) # max preview size in Android +_MAX_AREA = 1920 * 1440 # max mandatory preview stream resolution _MIN_CENTER_THRESHOLD_PERCENT = 0.02 -_MIN_DIMENSION_SIZE = (176, 144) # assume QCIF to be min preview size +_MIN_AREA = 176 * 144 # assume QCIF to be min preview size def _collect_data(cam, video_size, stabilize): @@ -90,27 +90,26 @@ def _calculate_center_offset_threshold(image_size): calculated. ex. (1920, 1080) Returns: - threshold value in pixels be which the circle centers can differ + threshold value ratio between which the circle centers can differ """ - max_diagonal = _point_distance(0, 0, - _MAX_DIMENSION_SIZE[0], _MAX_DIMENSION_SIZE[1]) - min_diagonal = _point_distance(0, 0, - _MIN_DIMENSION_SIZE[0], _MIN_DIMENSION_SIZE[1]) + img_area = image_size[0] * image_size[1] - img_diagonal = _point_distance(0, 0, image_size[0], image_size[1]) + normalized_area = ((img_area - _MIN_AREA) / + (_MAX_AREA - _MIN_AREA)) - normalized_diagonal = ((img_diagonal - min_diagonal) / - (max_diagonal - min_diagonal)) + if normalized_area > 1 or normalized_area < 0: + raise AssertionError(f'normalized area > 1 or < 0! ' + f'image_size[0]: {image_size[0]}, ' + f'image_size[1]: {image_size[1]}, ' + f'normalized_area: {normalized_area}') # Threshold should be larger for images with smaller resolution - normalized_threshold_percent = ((1 - normalized_diagonal) * + normalized_threshold_percent = ((1 - normalized_area) * (_MAX_CENTER_THRESHOLD_PERCENT - _MIN_CENTER_THRESHOLD_PERCENT)) - return ((normalized_threshold_percent + _MIN_CENTER_THRESHOLD_PERCENT) - * img_diagonal) - + return (normalized_threshold_percent + _MIN_CENTER_THRESHOLD_PERCENT) class PreviewStabilizationFoVTest(its_base_test.ItsBaseTest): """Tests if stabilized preview FoV is within spec. @@ -250,7 +249,8 @@ class PreviewStabilizationFoVTest(its_base_test.ItsBaseTest): f'{_ROUNDESS_DELTA_THRESHOLD}, ' f'actual ratio difference: {roundness_diff}. ') - # Distance between centers + # Distance between centers, x_offset and y_offset are relative to the + # radius of the circle, so they're normalized. Not pixel values. unstab_center = (ustab_circle['x_offset'], ustab_circle['y_offset']) logging.debug('unstabilized center: %s', unstab_center) stab_center = (stab_circle['x_offset'], stab_circle['y_offset']) diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/camera/its/ItsService.java b/apps/CtsVerifier/src/com/android/cts/verifier/camera/its/ItsService.java index 861c6f68810..212f988d205 100644 --- a/apps/CtsVerifier/src/com/android/cts/verifier/camera/its/ItsService.java +++ b/apps/CtsVerifier/src/com/android/cts/verifier/camera/its/ItsService.java @@ -1847,6 +1847,8 @@ public class ItsService extends Service implements SensorEventListener { // s1440p which is the max supported stream size in a combination, when preview // stabilization is on. Size maxPreviewSize = new Size(1920, 1440); + // QCIF, we test only sizes >= this. + Size minPreviewSize = new Size(176, 144); Size[] outputSizes = configMap.getOutputSizes(ImageFormat.YUV_420_888); if (outputSizes == null) { mSocketRunnableObj.sendResponse("supportedPreviewSizes", ""); @@ -1857,6 +1859,8 @@ public class ItsService extends Service implements SensorEventListener { .distinct() .filter(s -> s.getWidth() * s.getHeight() <= maxPreviewSize.getWidth() * maxPreviewSize.getHeight()) + .filter(s -> s.getWidth() * s.getHeight() + >= minPreviewSize.getWidth() * minPreviewSize.getHeight()) .sorted(Comparator.comparingInt(s -> s.getWidth() * s.getHeight())) .map(Size::toString) .collect(Collectors.joining(";")); |