# Copyright 2017 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. import its.caps import its.device import its.target import numpy as np GAIN_LENGTH = 4 TRANSFORM_LENGTH = 9 GREEN_GAIN = 1.0 GREEN_GAIN_TOL = 0.05 SINGLE_A = {'ae': [True, False, True], 'af': [False, True, True], 'full_3a': [True, True, True]} # note no AWB solo def main(): """Basic test for bring-up of 3A. To pass, 3A must converge. Check that the returned 3A values are legal. """ with its.device.ItsSession() as cam: props = cam.get_camera_properties() its.caps.skip_unless(its.caps.read_3a(props)) mono_camera = its.caps.mono_camera(props) for k, v in sorted(SINGLE_A.items()): print k try: s, e, gains, xform, fd = cam.do_3a(get_results=True, do_ae=v[0], do_af=v[1], do_awb=v[2], mono_camera=mono_camera) print ' sensitivity', s, 'exposure', e print ' gains', gains, 'transform', xform print ' fd', fd print '' except its.error.Error: print ' FAIL\n' if k == 'full_3a': assert s > 0 assert e > 0 assert len(gains) == 4 for g in gains: assert not np.isnan(g) assert len(xform) == 9 for x in xform: assert not np.isnan(x) assert fd >= 0 assert np.isclose(gains[2], GREEN_GAIN, GREEN_GAIN_TOL) if __name__ == '__main__': main()