summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJayant Chowdhary <jchowdhary@google.com>2022-07-19 02:12:01 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2022-07-19 02:12:01 +0000
commit749c93e62c6f990ec3f41a93169a9bb0c67bda33 (patch)
tree48acef82d4b3bc542509006a5f792e08a1571d48
parent0167f1197628d9721e4d372e77b688abaf6e93cc (diff)
parent2362155b98328328464897a9621e51916aebedd6 (diff)
downloadcts-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.py30
-rw-r--r--apps/CtsVerifier/src/com/android/cts/verifier/camera/its/ItsService.java4
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(";"));