CaptureResult.java revision eba1b3a843278a92611edf153faa41a01d793b25
1b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala/* 2b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * Copyright (C) 2012 The Android Open Source Project 3b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * 4b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * Licensed under the Apache License, Version 2.0 (the "License"); 5b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * you may not use this file except in compliance with the License. 6b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * You may obtain a copy of the License at 7b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * 8b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * http://www.apache.org/licenses/LICENSE-2.0 9b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * 10b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * Unless required by applicable law or agreed to in writing, software 11b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * distributed under the License is distributed on an "AS IS" BASIS, 12b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * See the License for the specific language governing permissions and 14b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * limitations under the License. 15b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala */ 16b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala 172f1a2e423e0fbb64467d6fcfa4e82c6384f31210Eino-Ville Talvalapackage android.hardware.camera2; 18b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala 1970c2207c34cf0e6b3b383b1b1500ff5385aa51a6Eino-Ville Talvalaimport android.hardware.camera2.impl.CameraMetadataNative; 20b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala 21b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala/** 22b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * <p>The results of a single image capture from the image sensor.</p> 23b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * 24b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * <p>Contains the final configuration for the capture hardware (sensor, lens, 25b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * flash), the processing pipeline, the control algorithms, and the output 26b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * buffers.</p> 27b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * 28b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * <p>CaptureResults are produced by a {@link CameraDevice} after processing a 29b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * {@link CaptureRequest}. All properties listed for capture requests can also 30b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * be queried on the capture result, to determine the final values used for 31b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * capture. The result also includes additional metadata about the state of the 32b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * camera device during the capture.</p> 33b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala * 34b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala */ 35b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvalapublic final class CaptureResult extends CameraMetadata { 3670c2207c34cf0e6b3b383b1b1500ff5385aa51a6Eino-Ville Talvala 3770c2207c34cf0e6b3b383b1b1500ff5385aa51a6Eino-Ville Talvala private final CameraMetadataNative mResults; 386bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin private final CaptureRequest mRequest; 396bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin private final int mSequenceId; 4070c2207c34cf0e6b3b383b1b1500ff5385aa51a6Eino-Ville Talvala 4170725500dcf3b666b43d50563d64705aab58d2d3Igor Murashkin /** 4270c2207c34cf0e6b3b383b1b1500ff5385aa51a6Eino-Ville Talvala * Takes ownership of the passed-in properties object 4370725500dcf3b666b43d50563d64705aab58d2d3Igor Murashkin * @hide 4470725500dcf3b666b43d50563d64705aab58d2d3Igor Murashkin */ 456bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin public CaptureResult(CameraMetadataNative results, CaptureRequest parent, int sequenceId) { 466bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin if (results == null) { 476bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin throw new IllegalArgumentException("results was null"); 486bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin } 496bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin 506bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin if (parent == null) { 516bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin throw new IllegalArgumentException("parent was null"); 526bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin } 536bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin 5470c2207c34cf0e6b3b383b1b1500ff5385aa51a6Eino-Ville Talvala mResults = results; 556bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin mRequest = parent; 566bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin mSequenceId = sequenceId; 5770c2207c34cf0e6b3b383b1b1500ff5385aa51a6Eino-Ville Talvala } 5870c2207c34cf0e6b3b383b1b1500ff5385aa51a6Eino-Ville Talvala 5970c2207c34cf0e6b3b383b1b1500ff5385aa51a6Eino-Ville Talvala @Override 6070c2207c34cf0e6b3b383b1b1500ff5385aa51a6Eino-Ville Talvala public <T> T get(Key<T> key) { 6170c2207c34cf0e6b3b383b1b1500ff5385aa51a6Eino-Ville Talvala return mResults.get(key); 62b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala } 63b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala 646bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin /** 656bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * Get the request associated with this result. 666bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * 676bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * <p>Whenever a request is successfully captured, with 686bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * {@link CameraDevice.CaptureListener#onCaptureCompleted}, 696bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * the {@code result}'s {@code getRequest()} will return that {@code request}. 706bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * </p> 716bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * 726bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * <p>In particular, 736bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * <code><pre>cameraDevice.capture(someRequest, new CaptureListener() { 746bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * {@literal @}Override 756bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * void onCaptureCompleted(CaptureRequest myRequest, CaptureResult myResult) { 766bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * assert(myResult.getRequest.equals(myRequest) == true); 776bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * } 786bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * }; 796bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * </code></pre> 806bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * </p> 816bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * 826bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * @return The request associated with this result. Never {@code null}. 836bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin */ 846bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin public CaptureRequest getRequest() { 856bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin return mRequest; 866bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin } 876bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin 886bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin /** 896bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * Get the frame number associated with this result. 906bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * 916bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * <p>Whenever a request has been processed, regardless of failure or success, 926bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * it gets a unique frame number assigned to its future result/failure.</p> 936bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * 946bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * <p>This value monotonically increments, starting with 0, 956bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * for every new result or failure; and the scope is the lifetime of the 966bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * {@link CameraDevice}.</p> 976bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * 986bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * @return int frame number 996bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin */ 1006bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin public int getFrameNumber() { 1016bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin return get(REQUEST_FRAME_COUNT); 1026bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin } 1036bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin 1046bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin /** 1056bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * The sequence ID for this failure that was returned by the 1066bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * {@link CameraDevice#capture} family of functions. 1076bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * 1086bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * <p>The sequence ID is a unique monotonically increasing value starting from 0, 1096bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * incremented every time a new group of requests is submitted to the CameraDevice.</p> 1106bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * 1116bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * @return int The ID for the sequence of requests that this capture result is a part of 1126bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * 1136bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * @see CameraDevice.CaptureListener#onCaptureSequenceCompleted 1146bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin */ 1156bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin public int getSequenceId() { 1166bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin return mSequenceId; 1176bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin } 1186bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin 1195a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /*@O~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~ 1205a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * The key entries below this point are generated from metadata 1215a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * definitions in /system/media/camera/docs. Do not modify by hand or 1225a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * modify the comment blocks at the start or end. 1235a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala *~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~*/ 1245a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 1250da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala 1265a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 127ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>A color transform matrix to use to transform 128ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * from sensor RGB color space to output linear sRGB color space</p> 12949a3ca9330d213fe35280c0af78a4d21acb98234Zhijun He * <p>This matrix is either set by the camera device when the request 1300da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * {@link CaptureRequest#COLOR_CORRECTION_MODE android.colorCorrection.mode} is not TRANSFORM_MATRIX, or 1315a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * directly by the application in the request when the 1320da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * {@link CaptureRequest#COLOR_CORRECTION_MODE android.colorCorrection.mode} is TRANSFORM_MATRIX.</p> 13349a3ca9330d213fe35280c0af78a4d21acb98234Zhijun He * <p>In the latter case, the camera device may round the matrix to account 13449a3ca9330d213fe35280c0af78a4d21acb98234Zhijun He * for precision issues; the final rounded matrix should be reported back 13549a3ca9330d213fe35280c0af78a4d21acb98234Zhijun He * in this matrix result metadata. The transform should keep the magnitude 13649a3ca9330d213fe35280c0af78a4d21acb98234Zhijun He * of the output color values within <code>[0, 1.0]</code> (assuming input color 13749a3ca9330d213fe35280c0af78a4d21acb98234Zhijun He * values is within the normalized range <code>[0, 1.0]</code>), or clipping may occur.</p> 1380da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * 1390da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * @see CaptureRequest#COLOR_CORRECTION_MODE 1405a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 1415a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Rational[]> COLOR_CORRECTION_TRANSFORM = 1425a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Rational[]>("android.colorCorrection.transform", Rational[].class); 1435a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 1445a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1457d2a5c5e7350658d0da4eaf75f9380593083e969Igor Murashkin * <p>Gains applying to Bayer raw color channels for 146ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * white-balance</p> 147ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>The 4-channel white-balance gains are defined in 1487d2a5c5e7350658d0da4eaf75f9380593083e969Igor Murashkin * the order of <code>[R G_even G_odd B]</code>, where <code>G_even</code> is the gain 1497d2a5c5e7350658d0da4eaf75f9380593083e969Igor Murashkin * for green pixels on even rows of the output, and <code>G_odd</code> 1507d2a5c5e7350658d0da4eaf75f9380593083e969Igor Murashkin * is the gain for green pixels on the odd rows. if a HAL 1515a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * does not support a separate gain for even/odd green channels, 1527d2a5c5e7350658d0da4eaf75f9380593083e969Igor Murashkin * it should use the <code>G_even</code> value, and write <code>G_odd</code> equal to 1537d2a5c5e7350658d0da4eaf75f9380593083e969Igor Murashkin * <code>G_even</code> in the output result metadata.</p> 154ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>This array is either set by HAL when the request 1550da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * {@link CaptureRequest#COLOR_CORRECTION_MODE android.colorCorrection.mode} is not TRANSFORM_MATRIX, or 156d5ff06a2ce4a65615ce5e8b8df93f2c3da2a8bbdIgor Murashkin * directly by the application in the request when the 1570da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * {@link CaptureRequest#COLOR_CORRECTION_MODE android.colorCorrection.mode} is TRANSFORM_MATRIX.</p> 1587d2a5c5e7350658d0da4eaf75f9380593083e969Igor Murashkin * <p>The output should be the gains actually applied by the HAL to 159ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * the current frame.</p> 1600da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * 1610da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * @see CaptureRequest#COLOR_CORRECTION_MODE 1625a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 1635a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<float[]> COLOR_CORRECTION_GAINS = 1645a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<float[]>("android.colorCorrection.gains", float[].class); 1655a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 1665a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 167ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>The ID sent with the latest 168ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * CAMERA2_TRIGGER_PRECAPTURE_METERING call</p> 169ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Must be 0 if no 1705a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * CAMERA2_TRIGGER_PRECAPTURE_METERING trigger received yet 1715a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * by HAL. Always updated even if AE algorithm ignores the 172ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * trigger</p> 1735a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @hide 1745a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 1755a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Integer> CONTROL_AE_PRECAPTURE_ID = 1765a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Integer>("android.control.aePrecaptureId", int.class); 1775a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 1785a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1790da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * <p>The desired mode for the camera device's 1800da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * auto-exposure routine.</p> 1810da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * <p>This control is only effective if {@link CaptureRequest#CONTROL_MODE android.control.mode} is 1820da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * AUTO.</p> 1830da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * <p>When set to any of the ON modes, the camera device's 1840da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * auto-exposure routine is enabled, overriding the 1850da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * application's selected exposure time, sensor sensitivity, 1860da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * and frame duration ({@link CaptureRequest#SENSOR_EXPOSURE_TIME android.sensor.exposureTime}, 1870da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * {@link CaptureRequest#SENSOR_SENSITIVITY android.sensor.sensitivity}, and 1880da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * {@link CaptureRequest#SENSOR_FRAME_DURATION android.sensor.frameDuration}). If one of the FLASH modes 1890da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * is selected, the camera device's flash unit controls are 1900da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * also overridden.</p> 1910da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * <p>The FLASH modes are only available if the camera device 1920da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * has a flash unit ({@link CameraCharacteristics#FLASH_INFO_AVAILABLE android.flash.info.available} is <code>true</code>).</p> 1930da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * <p>If flash TORCH mode is desired, this field must be set to 1940da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * ON or OFF, and {@link CaptureRequest#FLASH_MODE android.flash.mode} set to TORCH.</p> 1950da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * <p>When set to any of the ON modes, the values chosen by the 1960da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * camera device auto-exposure routine for the overridden 1970da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * fields for a given capture will be available in its 1980da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * CaptureResult.</p> 1990da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * 2005f2a47f3dedfc7859457067d8cdcdbfc28ee08acZhijun He * @see CaptureRequest#CONTROL_MODE 201265b34ce331cbe296f82ca357645312718c8d4c7Eino-Ville Talvala * @see CameraCharacteristics#FLASH_INFO_AVAILABLE 202265b34ce331cbe296f82ca357645312718c8d4c7Eino-Ville Talvala * @see CaptureRequest#FLASH_MODE 203aef3b7ed9f2a27aed9aecef030432d1100a60406Igor Murashkin * @see CaptureRequest#SENSOR_EXPOSURE_TIME 204aef3b7ed9f2a27aed9aecef030432d1100a60406Igor Murashkin * @see CaptureRequest#SENSOR_FRAME_DURATION 205399f05d1e7182ef6c88d30d3b98a467b845ca7c4Zhijun He * @see CaptureRequest#SENSOR_SENSITIVITY 2060da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * @see #CONTROL_AE_MODE_OFF 2070da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * @see #CONTROL_AE_MODE_ON 2080da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * @see #CONTROL_AE_MODE_ON_AUTO_FLASH 2090da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * @see #CONTROL_AE_MODE_ON_ALWAYS_FLASH 2100da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * @see #CONTROL_AE_MODE_ON_AUTO_FLASH_REDEYE 2110da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala */ 2120da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala public static final Key<Integer> CONTROL_AE_MODE = 2130da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala new Key<Integer>("android.control.aeMode", int.class); 2140da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala 2150da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala /** 216ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>List of areas to use for 217f59521d3b182de217b12e6d4ea31bd32e2418564Ruben Brunk * metering.</p> 218ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Each area is a rectangle plus weight: xmin, ymin, 219f59521d3b182de217b12e6d4ea31bd32e2418564Ruben Brunk * xmax, ymax, weight. The rectangle is defined to be inclusive of the 220ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * specified coordinates.</p> 221ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>The coordinate system is based on the active pixel array, 2222629f27362f1a35521501f3a28279ab05b9beb32Timothy Knight * with (0,0) being the top-left pixel in the active pixel array, and 2230da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * ({@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.width - 1, 2240da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the 2252629f27362f1a35521501f3a28279ab05b9beb32Timothy Knight * bottom-right pixel in the active pixel array. The weight 226ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * should be nonnegative.</p> 227ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>If all regions have 0 weight, then no specific metering area 2285a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * needs to be used by the HAL. If the metering region is 2290da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * outside the current {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion}, the HAL 2305a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * should ignore the sections outside the region and output the 231f59521d3b182de217b12e6d4ea31bd32e2418564Ruben Brunk * used sections in the frame metadata.</p> 2320da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * 2330da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * @see CaptureRequest#SCALER_CROP_REGION 234265b34ce331cbe296f82ca357645312718c8d4c7Eino-Ville Talvala * @see CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE 2355a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 2365a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<int[]> CONTROL_AE_REGIONS = 2375a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<int[]>("android.control.aeRegions", int[].class); 2385a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 2395a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 240ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Current state of AE algorithm</p> 241228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <p>Switching between or enabling AE modes ({@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode}) always 242228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * resets the AE state to INACTIVE. Similarly, switching between {@link CaptureRequest#CONTROL_MODE android.control.mode}, 243228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * or {@link CaptureRequest#CONTROL_SCENE_MODE android.control.sceneMode} if <code>{@link CaptureRequest#CONTROL_MODE android.control.mode} == USE_SCENE_MODE</code> resets all 244228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * the algorithm states to INACTIVE.</p> 245228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <p>The camera device can do several state transitions between two results, if it is 246228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * allowed by the state transition table. For example: INACTIVE may never actually be 247228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * seen in a result.</p> 248228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <p>The state in the result is the state for this image (in sync with this image): if 249228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * AE state becomes CONVERGED, then the image data associated with this result should 250228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * be good to use.</p> 251228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <p>Below are state transition tables for different AE modes.</p> 252228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <table> 253228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <thead> 254228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 255228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <th align="center">State</th> 256228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <th align="center">Transition Cause</th> 257228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <th align="center">New State</th> 258228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <th align="center">Notes</th> 259228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 260228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </thead> 261228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tbody> 262228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 263228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">INACTIVE</td> 264228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center"></td> 265228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">INACTIVE</td> 266228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Camera device auto exposure algorithm is disabled</td> 267228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 268228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tbody> 269228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </table> 270228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <p>When {@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode} is AE_MODE_ON_*:</p> 271228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <table> 272228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <thead> 273228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 274228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <th align="center">State</th> 275228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <th align="center">Transition Cause</th> 276228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <th align="center">New State</th> 277228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <th align="center">Notes</th> 278228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 279228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </thead> 280228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tbody> 281228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 282228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">INACTIVE</td> 283228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Camera device initiates AE scan</td> 284228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">SEARCHING</td> 285228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Values changing</td> 286228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 287228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 288228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">INACTIVE</td> 289228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">{@link CaptureRequest#CONTROL_AE_LOCK android.control.aeLock} is ON</td> 290228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">LOCKED</td> 291228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Values locked</td> 292228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 293228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 294228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">SEARCHING</td> 295228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Camera device finishes AE scan</td> 296228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">CONVERGED</td> 297228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Good values, not changing</td> 298228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 299228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 300228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">SEARCHING</td> 301228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Camera device finishes AE scan</td> 302228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">FLASH_REQUIRED</td> 303228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Converged but too dark w/o flash</td> 304228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 305228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 306228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">SEARCHING</td> 307228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">{@link CaptureRequest#CONTROL_AE_LOCK android.control.aeLock} is ON</td> 308228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">LOCKED</td> 309228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Values locked</td> 310228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 311228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 312228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">CONVERGED</td> 313228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Camera device initiates AE scan</td> 314228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">SEARCHING</td> 315228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Values changing</td> 316228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 317228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 318228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">CONVERGED</td> 319228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">{@link CaptureRequest#CONTROL_AE_LOCK android.control.aeLock} is ON</td> 320228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">LOCKED</td> 321228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Values locked</td> 322228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 323228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 324228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">FLASH_REQUIRED</td> 325228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Camera device initiates AE scan</td> 326228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">SEARCHING</td> 327228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Values changing</td> 328228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 329228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 330228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">FLASH_REQUIRED</td> 331228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">{@link CaptureRequest#CONTROL_AE_LOCK android.control.aeLock} is ON</td> 332228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">LOCKED</td> 333228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Values locked</td> 334228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 335228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 336228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">LOCKED</td> 337228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">{@link CaptureRequest#CONTROL_AE_LOCK android.control.aeLock} is OFF</td> 338228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">SEARCHING</td> 339228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Values not good after unlock</td> 340228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 341228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 342228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">LOCKED</td> 343228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">{@link CaptureRequest#CONTROL_AE_LOCK android.control.aeLock} is OFF</td> 344228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">CONVERGED</td> 345228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Values good after unlock</td> 346228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 347228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 348228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">LOCKED</td> 349228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">{@link CaptureRequest#CONTROL_AE_LOCK android.control.aeLock} is OFF</td> 350228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">FLASH_REQUIRED</td> 351228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Exposure good, but too dark</td> 352228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 353228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 354228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">PRECAPTURE</td> 355228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Sequence done. {@link CaptureRequest#CONTROL_AE_LOCK android.control.aeLock} is OFF</td> 356228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">CONVERGED</td> 357228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Ready for high-quality capture</td> 358228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 359228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 360228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">PRECAPTURE</td> 361228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Sequence done. {@link CaptureRequest#CONTROL_AE_LOCK android.control.aeLock} is ON</td> 362228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">LOCKED</td> 363228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Ready for high-quality capture</td> 364228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 365228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 366228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Any state</td> 367228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">{@link CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER android.control.aePrecaptureTrigger} is START</td> 368228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">PRECAPTURE</td> 369228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Start AE precapture metering sequence</td> 370228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 371228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tbody> 372228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </table> 373228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * 374228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * @see CaptureRequest#CONTROL_AE_LOCK 375228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * @see CaptureRequest#CONTROL_AE_MODE 376228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * @see CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER 377228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * @see CaptureRequest#CONTROL_MODE 378228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * @see CaptureRequest#CONTROL_SCENE_MODE 3795a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_AE_STATE_INACTIVE 3805a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_AE_STATE_SEARCHING 3815a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_AE_STATE_CONVERGED 3825a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_AE_STATE_LOCKED 3835a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_AE_STATE_FLASH_REQUIRED 3845a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_AE_STATE_PRECAPTURE 3855a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 3865a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Integer> CONTROL_AE_STATE = 3875a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Integer>("android.control.aeState", int.class); 3885a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 3895a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 390ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Whether AF is currently enabled, and what 391ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * mode it is set to</p> 3920da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * <p>Only effective if {@link CaptureRequest#CONTROL_MODE android.control.mode} = AUTO.</p> 39378146ecb24871302a4c4dc0a7341044a06d29ee8Zhijun He * <p>If the lens is controlled by the camera device auto-focus algorithm, 39478146ecb24871302a4c4dc0a7341044a06d29ee8Zhijun He * the camera device will report the current AF status in android.control.afState 39578146ecb24871302a4c4dc0a7341044a06d29ee8Zhijun He * in result metadata.</p> 3960da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * 3970da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * @see CaptureRequest#CONTROL_MODE 3985a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_AF_MODE_OFF 3995a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_AF_MODE_AUTO 4005a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_AF_MODE_MACRO 4015a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_AF_MODE_CONTINUOUS_VIDEO 4025a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_AF_MODE_CONTINUOUS_PICTURE 4035a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_AF_MODE_EDOF 4045a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 4055a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Integer> CONTROL_AF_MODE = 4065a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Integer>("android.control.afMode", int.class); 4075a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 4085a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 409ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>List of areas to use for focus 410f59521d3b182de217b12e6d4ea31bd32e2418564Ruben Brunk * estimation.</p> 411ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Each area is a rectangle plus weight: xmin, ymin, 412f59521d3b182de217b12e6d4ea31bd32e2418564Ruben Brunk * xmax, ymax, weight. The rectangle is defined to be inclusive of the 413ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * specified coordinates.</p> 414ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>The coordinate system is based on the active pixel array, 4152629f27362f1a35521501f3a28279ab05b9beb32Timothy Knight * with (0,0) being the top-left pixel in the active pixel array, and 4160da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * ({@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.width - 1, 4170da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the 4182629f27362f1a35521501f3a28279ab05b9beb32Timothy Knight * bottom-right pixel in the active pixel array. The weight 419ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * should be nonnegative.</p> 420ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>If all regions have 0 weight, then no specific focus area 4215a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * needs to be used by the HAL. If the focusing region is 4220da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * outside the current {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion}, the HAL 4235a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * should ignore the sections outside the region and output the 424f59521d3b182de217b12e6d4ea31bd32e2418564Ruben Brunk * used sections in the frame metadata.</p> 4250da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * 4260da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * @see CaptureRequest#SCALER_CROP_REGION 427265b34ce331cbe296f82ca357645312718c8d4c7Eino-Ville Talvala * @see CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE 4285a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 4295a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<int[]> CONTROL_AF_REGIONS = 4305a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<int[]>("android.control.afRegions", int[].class); 4315a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 4325a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 433ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Current state of AF algorithm</p> 434228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <p>Switching between or enabling AF modes ({@link CaptureRequest#CONTROL_AF_MODE android.control.afMode}) always 435228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * resets the AF state to INACTIVE. Similarly, switching between {@link CaptureRequest#CONTROL_MODE android.control.mode}, 436228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * or {@link CaptureRequest#CONTROL_SCENE_MODE android.control.sceneMode} if <code>{@link CaptureRequest#CONTROL_MODE android.control.mode} == USE_SCENE_MODE</code> resets all 437228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * the algorithm states to INACTIVE.</p> 438228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <p>The camera device can do several state transitions between two results, if it is 439228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * allowed by the state transition table. For example: INACTIVE may never actually be 440228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * seen in a result.</p> 441228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <p>The state in the result is the state for this image (in sync with this image): if 442228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * AF state becomes FOCUSED, then the image data associated with this result should 443228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * be sharp.</p> 444228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <p>Below are state transition tables for different AF modes.</p> 445228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <p>When {@link CaptureRequest#CONTROL_AF_MODE android.control.afMode} is AF_MODE_OFF or AF_MODE_EDOF:</p> 446228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <table> 447228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <thead> 448228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 449228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <th align="center">State</th> 450228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <th align="center">Transition Cause</th> 451228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <th align="center">New State</th> 452228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <th align="center">Notes</th> 453228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 454228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </thead> 455228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tbody> 456228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 457228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">INACTIVE</td> 458228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center"></td> 459228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">INACTIVE</td> 460228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Never changes</td> 461228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 462228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tbody> 463228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </table> 464228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <p>When {@link CaptureRequest#CONTROL_AF_MODE android.control.afMode} is AF_MODE_AUTO or AF_MODE_MACRO:</p> 465228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <table> 466228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <thead> 467228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 468228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <th align="center">State</th> 469228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <th align="center">Transition Cause</th> 470228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <th align="center">New State</th> 471228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <th align="center">Notes</th> 472228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 473228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </thead> 474228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tbody> 475228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 476228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">INACTIVE</td> 477228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">AF_TRIGGER</td> 478228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">ACTIVE_SCAN</td> 479228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Start AF sweep, Lens now moving</td> 480228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 481228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 482228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">ACTIVE_SCAN</td> 483228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">AF sweep done</td> 484228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">FOCUSED_LOCKED</td> 485228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Focused, Lens now locked</td> 486228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 487228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 488228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">ACTIVE_SCAN</td> 489228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">AF sweep done</td> 490228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">NOT_FOCUSED_LOCKED</td> 491228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Not focused, Lens now locked</td> 492228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 493228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 494228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">ACTIVE_SCAN</td> 495228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">AF_CANCEL</td> 496228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">INACTIVE</td> 497228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Cancel/reset AF, Lens now locked</td> 498228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 499228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 500228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">FOCUSED_LOCKED</td> 501228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">AF_CANCEL</td> 502228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">INACTIVE</td> 503228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Cancel/reset AF</td> 504228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 505228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 506228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">FOCUSED_LOCKED</td> 507228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">AF_TRIGGER</td> 508228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">ACTIVE_SCAN</td> 509228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Start new sweep, Lens now moving</td> 510228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 511228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 512228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">NOT_FOCUSED_LOCKED</td> 513228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">AF_CANCEL</td> 514228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">INACTIVE</td> 515228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Cancel/reset AF</td> 516228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 517228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 518228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">NOT_FOCUSED_LOCKED</td> 519228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">AF_TRIGGER</td> 520228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">ACTIVE_SCAN</td> 521228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Start new sweep, Lens now moving</td> 522228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 523228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 524228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Any state</td> 525228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Mode change</td> 526228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">INACTIVE</td> 527228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center"></td> 528228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 529228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tbody> 530228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </table> 531228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <p>When {@link CaptureRequest#CONTROL_AF_MODE android.control.afMode} is AF_MODE_CONTINUOUS_VIDEO:</p> 532228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <table> 533228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <thead> 534228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 535228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <th align="center">State</th> 536228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <th align="center">Transition Cause</th> 537228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <th align="center">New State</th> 538228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <th align="center">Notes</th> 539228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 540228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </thead> 541228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tbody> 542228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 543228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">INACTIVE</td> 544228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Camera device initiates new scan</td> 545228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">PASSIVE_SCAN</td> 546228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Start AF scan, Lens now moving</td> 547228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 548228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 549228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">INACTIVE</td> 550228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">AF_TRIGGER</td> 551228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">NOT_FOCUSED_LOCKED</td> 552228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">AF state query, Lens now locked</td> 553228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 554228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 555228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">PASSIVE_SCAN</td> 556228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Camera device completes current scan</td> 557228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">PASSIVE_FOCUSED</td> 558228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">End AF scan, Lens now locked</td> 559228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 560228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 561228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">PASSIVE_SCAN</td> 562228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Camera device fails current scan</td> 563228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">PASSIVE_UNFOCUSED</td> 564228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">End AF scan, Lens now locked</td> 565228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 566228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 567228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">PASSIVE_SCAN</td> 568228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">AF_TRIGGER</td> 569228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">FOCUSED_LOCKED</td> 570228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Immediate trans. If focus is good, Lens now locked</td> 571228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 572228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 573228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">PASSIVE_SCAN</td> 574228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">AF_TRIGGER</td> 575228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">NOT_FOCUSED_LOCKED</td> 576228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Immediate trans. if focus is bad, Lens now locked</td> 577228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 578228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 579228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">PASSIVE_SCAN</td> 580228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">AF_CANCEL</td> 581228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">INACTIVE</td> 582228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Reset lens position, Lens now locked</td> 583228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 584228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 585228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">PASSIVE_FOCUSED</td> 586228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Camera device initiates new scan</td> 587228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">PASSIVE_SCAN</td> 588228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Start AF scan, Lens now moving</td> 589228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 590228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 591228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">PASSIVE_UNFOCUSED</td> 592228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Camera device initiates new scan</td> 593228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">PASSIVE_SCAN</td> 594228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Start AF scan, Lens now moving</td> 595228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 596228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 597228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">PASSIVE_FOCUSED</td> 598228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">AF_TRIGGER</td> 599228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">FOCUSED_LOCKED</td> 600228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Immediate trans. Lens now locked</td> 601228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 602228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 603228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">PASSIVE_UNFOCUSED</td> 604228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">AF_TRIGGER</td> 605228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">NOT_FOCUSED_LOCKED</td> 606228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Immediate trans. Lens now locked</td> 607228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 608228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 609228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">FOCUSED_LOCKED</td> 610228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">AF_TRIGGER</td> 611228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">FOCUSED_LOCKED</td> 612228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">No effect</td> 613228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 614228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 615228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">FOCUSED_LOCKED</td> 616228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">AF_CANCEL</td> 617228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">INACTIVE</td> 618228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Restart AF scan</td> 619228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 620228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 621228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">NOT_FOCUSED_LOCKED</td> 622228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">AF_TRIGGER</td> 623228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">NOT_FOCUSED_LOCKED</td> 624228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">No effect</td> 625228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 626228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 627228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">NOT_FOCUSED_LOCKED</td> 628228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">AF_CANCEL</td> 629228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">INACTIVE</td> 630228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Restart AF scan</td> 631228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 632228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tbody> 633228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </table> 634228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <p>When {@link CaptureRequest#CONTROL_AF_MODE android.control.afMode} is AF_MODE_CONTINUOUS_PICTURE:</p> 635228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <table> 636228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <thead> 637228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 638228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <th align="center">State</th> 639228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <th align="center">Transition Cause</th> 640228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <th align="center">New State</th> 641228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <th align="center">Notes</th> 642228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 643228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </thead> 644228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tbody> 645228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 646228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">INACTIVE</td> 647228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Camera device initiates new scan</td> 648228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">PASSIVE_SCAN</td> 649228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Start AF scan, Lens now moving</td> 650228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 651228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 652228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">INACTIVE</td> 653228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">AF_TRIGGER</td> 654228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">NOT_FOCUSED_LOCKED</td> 655228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">AF state query, Lens now locked</td> 656228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 657228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 658228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">PASSIVE_SCAN</td> 659228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Camera device completes current scan</td> 660228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">PASSIVE_FOCUSED</td> 661228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">End AF scan, Lens now locked</td> 662228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 663228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 664228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">PASSIVE_SCAN</td> 665228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Camera device fails current scan</td> 666228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">PASSIVE_UNFOCUSED</td> 667228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">End AF scan, Lens now locked</td> 668228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 669228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 670228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">PASSIVE_SCAN</td> 671228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">AF_TRIGGER</td> 672228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">FOCUSED_LOCKED</td> 673228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Eventual trans. once focus good, Lens now locked</td> 674228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 675228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 676228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">PASSIVE_SCAN</td> 677228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">AF_TRIGGER</td> 678228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">NOT_FOCUSED_LOCKED</td> 679228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Eventual trans. if cannot focus, Lens now locked</td> 680228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 681228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 682228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">PASSIVE_SCAN</td> 683228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">AF_CANCEL</td> 684228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">INACTIVE</td> 685228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Reset lens position, Lens now locked</td> 686228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 687228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 688228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">PASSIVE_FOCUSED</td> 689228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Camera device initiates new scan</td> 690228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">PASSIVE_SCAN</td> 691228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Start AF scan, Lens now moving</td> 692228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 693228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 694228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">PASSIVE_UNFOCUSED</td> 695228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Camera device initiates new scan</td> 696228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">PASSIVE_SCAN</td> 697228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Start AF scan, Lens now moving</td> 698228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 699228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 700228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">PASSIVE_FOCUSED</td> 701228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">AF_TRIGGER</td> 702228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">FOCUSED_LOCKED</td> 703228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Immediate trans. Lens now locked</td> 704228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 705228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 706228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">PASSIVE_UNFOCUSED</td> 707228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">AF_TRIGGER</td> 708228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">NOT_FOCUSED_LOCKED</td> 709228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Immediate trans. Lens now locked</td> 710228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 711228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 712228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">FOCUSED_LOCKED</td> 713228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">AF_TRIGGER</td> 714228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">FOCUSED_LOCKED</td> 715228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">No effect</td> 716228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 717228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 718228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">FOCUSED_LOCKED</td> 719228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">AF_CANCEL</td> 720228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">INACTIVE</td> 721228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Restart AF scan</td> 722228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 723228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 724228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">NOT_FOCUSED_LOCKED</td> 725228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">AF_TRIGGER</td> 726228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">NOT_FOCUSED_LOCKED</td> 727228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">No effect</td> 728228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 729228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 730228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">NOT_FOCUSED_LOCKED</td> 731228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">AF_CANCEL</td> 732228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">INACTIVE</td> 733228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Restart AF scan</td> 734228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 735228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tbody> 736228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </table> 737228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * 738228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * @see CaptureRequest#CONTROL_AF_MODE 739228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * @see CaptureRequest#CONTROL_MODE 740228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * @see CaptureRequest#CONTROL_SCENE_MODE 7415a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_AF_STATE_INACTIVE 7425a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_AF_STATE_PASSIVE_SCAN 7435a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_AF_STATE_PASSIVE_FOCUSED 7445a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_AF_STATE_ACTIVE_SCAN 7455a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_AF_STATE_FOCUSED_LOCKED 7465a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_AF_STATE_NOT_FOCUSED_LOCKED 7479f880f79a3f179443c8b37c3434717432b2ec8d9Eino-Ville Talvala * @see #CONTROL_AF_STATE_PASSIVE_UNFOCUSED 7485a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 7495a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Integer> CONTROL_AF_STATE = 7505a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Integer>("android.control.afState", int.class); 7515a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 7525a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 753ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>The ID sent with the latest 754ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * CAMERA2_TRIGGER_AUTOFOCUS call</p> 755ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Must be 0 if no CAMERA2_TRIGGER_AUTOFOCUS trigger 7565a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * received yet by HAL. Always updated even if AF algorithm 757ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * ignores the trigger</p> 7585a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @hide 7595a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 7605a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Integer> CONTROL_AF_TRIGGER_ID = 7615a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Integer>("android.control.afTriggerId", int.class); 7625a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 7635a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 764ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Whether AWB is currently setting the color 7655a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * transform fields, and what its illumination target 766ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * is</p> 767399f05d1e7182ef6c88d30d3b98a467b845ca7c4Zhijun He * <p>This control is only effective if {@link CaptureRequest#CONTROL_MODE android.control.mode} is AUTO.</p> 768399f05d1e7182ef6c88d30d3b98a467b845ca7c4Zhijun He * <p>When set to the ON mode, the camera device's auto white balance 769399f05d1e7182ef6c88d30d3b98a467b845ca7c4Zhijun He * routine is enabled, overriding the application's selected 770399f05d1e7182ef6c88d30d3b98a467b845ca7c4Zhijun He * {@link CaptureRequest#COLOR_CORRECTION_TRANSFORM android.colorCorrection.transform}, {@link CaptureRequest#COLOR_CORRECTION_GAINS android.colorCorrection.gains} and 771399f05d1e7182ef6c88d30d3b98a467b845ca7c4Zhijun He * {@link CaptureRequest#COLOR_CORRECTION_MODE android.colorCorrection.mode}.</p> 772399f05d1e7182ef6c88d30d3b98a467b845ca7c4Zhijun He * <p>When set to the OFF mode, the camera device's auto white balance 773399f05d1e7182ef6c88d30d3b98a467b845ca7c4Zhijun He * routine is disabled. The applicantion manually controls the white 774399f05d1e7182ef6c88d30d3b98a467b845ca7c4Zhijun He * balance by {@link CaptureRequest#COLOR_CORRECTION_TRANSFORM android.colorCorrection.transform}, android.colorCorrection.gains 775399f05d1e7182ef6c88d30d3b98a467b845ca7c4Zhijun He * and {@link CaptureRequest#COLOR_CORRECTION_MODE android.colorCorrection.mode}.</p> 776399f05d1e7182ef6c88d30d3b98a467b845ca7c4Zhijun He * <p>When set to any other modes, the camera device's auto white balance 777399f05d1e7182ef6c88d30d3b98a467b845ca7c4Zhijun He * routine is disabled. The camera device uses each particular illumination 778399f05d1e7182ef6c88d30d3b98a467b845ca7c4Zhijun He * target for white balance adjustment.</p> 7790da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * 780265b34ce331cbe296f82ca357645312718c8d4c7Eino-Ville Talvala * @see CaptureRequest#COLOR_CORRECTION_GAINS 7815f2a47f3dedfc7859457067d8cdcdbfc28ee08acZhijun He * @see CaptureRequest#COLOR_CORRECTION_MODE 7825f2a47f3dedfc7859457067d8cdcdbfc28ee08acZhijun He * @see CaptureRequest#COLOR_CORRECTION_TRANSFORM 783265b34ce331cbe296f82ca357645312718c8d4c7Eino-Ville Talvala * @see CaptureRequest#CONTROL_MODE 7845a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_AWB_MODE_OFF 7855a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_AWB_MODE_AUTO 7865a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_AWB_MODE_INCANDESCENT 7875a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_AWB_MODE_FLUORESCENT 7885a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_AWB_MODE_WARM_FLUORESCENT 7895a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_AWB_MODE_DAYLIGHT 7905a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_AWB_MODE_CLOUDY_DAYLIGHT 7915a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_AWB_MODE_TWILIGHT 7925a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_AWB_MODE_SHADE 7935a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 7945a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Integer> CONTROL_AWB_MODE = 7955a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Integer>("android.control.awbMode", int.class); 7965a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 7975a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 798ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>List of areas to use for illuminant 799f59521d3b182de217b12e6d4ea31bd32e2418564Ruben Brunk * estimation.</p> 800ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Only used in AUTO mode.</p> 801ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Each area is a rectangle plus weight: xmin, ymin, 802f59521d3b182de217b12e6d4ea31bd32e2418564Ruben Brunk * xmax, ymax, weight. The rectangle is defined to be inclusive of the 803ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * specified coordinates.</p> 804ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>The coordinate system is based on the active pixel array, 8052629f27362f1a35521501f3a28279ab05b9beb32Timothy Knight * with (0,0) being the top-left pixel in the active pixel array, and 8060da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * ({@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.width - 1, 8070da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the 8082629f27362f1a35521501f3a28279ab05b9beb32Timothy Knight * bottom-right pixel in the active pixel array. The weight 809ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * should be nonnegative.</p> 810ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>If all regions have 0 weight, then no specific metering area 8115a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * needs to be used by the HAL. If the metering region is 8120da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * outside the current {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion}, the HAL 8135a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * should ignore the sections outside the region and output the 814f59521d3b182de217b12e6d4ea31bd32e2418564Ruben Brunk * used sections in the frame metadata.</p> 8150da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * 8160da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * @see CaptureRequest#SCALER_CROP_REGION 817265b34ce331cbe296f82ca357645312718c8d4c7Eino-Ville Talvala * @see CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE 8185a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 8195a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<int[]> CONTROL_AWB_REGIONS = 8205a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<int[]>("android.control.awbRegions", int[].class); 8215a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 8225a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 823ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Current state of AWB algorithm</p> 824228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <p>Switching between or enabling AWB modes ({@link CaptureRequest#CONTROL_AWB_MODE android.control.awbMode}) always 825228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * resets the AWB state to INACTIVE. Similarly, switching between {@link CaptureRequest#CONTROL_MODE android.control.mode}, 826228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * or {@link CaptureRequest#CONTROL_SCENE_MODE android.control.sceneMode} if <code>{@link CaptureRequest#CONTROL_MODE android.control.mode} == USE_SCENE_MODE</code> resets all 827228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * the algorithm states to INACTIVE.</p> 828228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <p>The camera device can do several state transitions between two results, if it is 829228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * allowed by the state transition table. So INACTIVE may never actually be seen in 830228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * a result.</p> 831228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <p>The state in the result is the state for this image (in sync with this image): if 832228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * AWB state becomes CONVERGED, then the image data associated with this result should 833228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * be good to use.</p> 834228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <p>Below are state transition tables for different AWB modes.</p> 835228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <p>When <code>{@link CaptureRequest#CONTROL_AWB_MODE android.control.awbMode} != AWB_MODE_AUTO</code>:</p> 836228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <table> 837228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <thead> 838228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 839228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <th align="center">State</th> 840228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <th align="center">Transition Cause</th> 841228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <th align="center">New State</th> 842228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <th align="center">Notes</th> 843228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 844228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </thead> 845228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tbody> 846228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 847228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">INACTIVE</td> 848228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center"></td> 849228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">INACTIVE</td> 850228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Camera device auto white balance algorithm is disabled</td> 851228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 852228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tbody> 853228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </table> 854228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <p>When {@link CaptureRequest#CONTROL_AWB_MODE android.control.awbMode} is AWB_MODE_AUTO:</p> 855228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <table> 856228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <thead> 857228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 858228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <th align="center">State</th> 859228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <th align="center">Transition Cause</th> 860228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <th align="center">New State</th> 861228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <th align="center">Notes</th> 862228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 863228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </thead> 864228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tbody> 865228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 866228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">INACTIVE</td> 867228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Camera device initiates AWB scan</td> 868228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">SEARCHING</td> 869228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Values changing</td> 870228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 871228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 872228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">INACTIVE</td> 873228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">{@link CaptureRequest#CONTROL_AWB_LOCK android.control.awbLock} is ON</td> 874228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">LOCKED</td> 875228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Values locked</td> 876228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 877228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 878228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">SEARCHING</td> 879228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Camera device finishes AWB scan</td> 880228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">CONVERGED</td> 881228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Good values, not changing</td> 882228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 883228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 884228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">SEARCHING</td> 885228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">{@link CaptureRequest#CONTROL_AWB_LOCK android.control.awbLock} is ON</td> 886228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">LOCKED</td> 887228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Values locked</td> 888228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 889228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 890228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">CONVERGED</td> 891228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Camera device initiates AWB scan</td> 892228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">SEARCHING</td> 893228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Values changing</td> 894228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 895228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 896228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">CONVERGED</td> 897228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">{@link CaptureRequest#CONTROL_AWB_LOCK android.control.awbLock} is ON</td> 898228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">LOCKED</td> 899228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Values locked</td> 900228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 901228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 902228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">LOCKED</td> 903228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">{@link CaptureRequest#CONTROL_AWB_LOCK android.control.awbLock} is OFF</td> 904228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">SEARCHING</td> 905228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Values not good after unlock</td> 906228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 907228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <tr> 908228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">LOCKED</td> 909228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">{@link CaptureRequest#CONTROL_AWB_LOCK android.control.awbLock} is OFF</td> 910228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">CONVERGED</td> 911228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * <td align="center">Values good after unlock</td> 912228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tr> 913228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </tbody> 914228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * </table> 915228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * 916228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * @see CaptureRequest#CONTROL_AWB_LOCK 917228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * @see CaptureRequest#CONTROL_AWB_MODE 918228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * @see CaptureRequest#CONTROL_MODE 919228f4f92e70d9326d473e02bcdcc8faf9e706a4dZhijun He * @see CaptureRequest#CONTROL_SCENE_MODE 9205a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_AWB_STATE_INACTIVE 9215a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_AWB_STATE_SEARCHING 9225a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_AWB_STATE_CONVERGED 9235a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_AWB_STATE_LOCKED 9245a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 9255a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Integer> CONTROL_AWB_STATE = 9265a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Integer>("android.control.awbState", int.class); 9275a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 9285a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 929ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Overall mode of 3A control 930ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * routines</p> 931f353742124af698098884b4172644af0851b30caZhijun He * <p>High-level 3A control. When set to OFF, all 3A control 9325f2a47f3dedfc7859457067d8cdcdbfc28ee08acZhijun He * by the camera device is disabled. The application must set the fields for 933f353742124af698098884b4172644af0851b30caZhijun He * capture parameters itself.</p> 934f353742124af698098884b4172644af0851b30caZhijun He * <p>When set to AUTO, the individual algorithm controls in 9350da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * android.control.* are in effect, such as {@link CaptureRequest#CONTROL_AF_MODE android.control.afMode}.</p> 936f353742124af698098884b4172644af0851b30caZhijun He * <p>When set to USE_SCENE_MODE, the individual controls in 9375f2a47f3dedfc7859457067d8cdcdbfc28ee08acZhijun He * android.control.* are mostly disabled, and the camera device implements 938f353742124af698098884b4172644af0851b30caZhijun He * one of the scene mode settings (such as ACTION, SUNSET, or PARTY) 9395f2a47f3dedfc7859457067d8cdcdbfc28ee08acZhijun He * as it wishes. The camera device scene mode 3A settings are provided by 940f353742124af698098884b4172644af0851b30caZhijun He * android.control.sceneModeOverrides.</p> 9412d5e89778e955b4ff209a93e738761356349d48cZhijun He * <p>When set to OFF_KEEP_STATE, it is similar to OFF mode, the only difference 9422d5e89778e955b4ff209a93e738761356349d48cZhijun He * is that this frame will not be used by camera device background 3A statistics 9432d5e89778e955b4ff209a93e738761356349d48cZhijun He * update, as if this frame is never captured. This mode can be used in the scenario 9442d5e89778e955b4ff209a93e738761356349d48cZhijun He * where the application doesn't want a 3A manual control capture to affect 9452d5e89778e955b4ff209a93e738761356349d48cZhijun He * the subsequent auto 3A capture results.</p> 9460da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * 9470da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * @see CaptureRequest#CONTROL_AF_MODE 9485a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_MODE_OFF 9495a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_MODE_AUTO 9505a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #CONTROL_MODE_USE_SCENE_MODE 9512d5e89778e955b4ff209a93e738761356349d48cZhijun He * @see #CONTROL_MODE_OFF_KEEP_STATE 9525a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 9535a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Integer> CONTROL_MODE = 9545a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Integer>("android.control.mode", int.class); 9555a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 9565a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 957ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Operation mode for edge 958ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * enhancement</p> 9592807936f5dfdeff25e9ace3482100511a69dcf13Zhijun He * <p>Edge/sharpness/detail enhancement. OFF means no 9602807936f5dfdeff25e9ace3482100511a69dcf13Zhijun He * enhancement will be applied by the HAL.</p> 9615f2a47f3dedfc7859457067d8cdcdbfc28ee08acZhijun He * <p>FAST/HIGH_QUALITY both mean camera device determined enhancement 9622807936f5dfdeff25e9ace3482100511a69dcf13Zhijun He * will be applied. HIGH_QUALITY mode indicates that the 9635f2a47f3dedfc7859457067d8cdcdbfc28ee08acZhijun He * camera device will use the highest-quality enhancement algorithms, 9645f2a47f3dedfc7859457067d8cdcdbfc28ee08acZhijun He * even if it slows down capture rate. FAST means the camera device will 9652807936f5dfdeff25e9ace3482100511a69dcf13Zhijun He * not slow down capture rate when applying edge enhancement.</p> 9665a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #EDGE_MODE_OFF 9675a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #EDGE_MODE_FAST 9685a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #EDGE_MODE_HIGH_QUALITY 9695a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 9705a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Integer> EDGE_MODE = 9715a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Integer>("android.edge.mode", int.class); 9725a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 9735a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 97466d065a6d48cafe390c697c77b44ba5196ee0870Zhijun He * <p>The desired mode for for the camera device's flash control.</p> 97566d065a6d48cafe390c697c77b44ba5196ee0870Zhijun He * <p>This control is only effective when flash unit is available 976153ac102d36df66853b523ab01763dc457972517Zhijun He * (<code>{@link CameraCharacteristics#FLASH_INFO_AVAILABLE android.flash.info.available} == true</code>).</p> 97766d065a6d48cafe390c697c77b44ba5196ee0870Zhijun He * <p>When this control is used, the {@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode} must be set to ON or OFF. 97866d065a6d48cafe390c697c77b44ba5196ee0870Zhijun He * Otherwise, the camera device auto-exposure related flash control (ON_AUTO_FLASH, 97966d065a6d48cafe390c697c77b44ba5196ee0870Zhijun He * ON_ALWAYS_FLASH, or ON_AUTO_FLASH_REDEYE) will override this control.</p> 98066d065a6d48cafe390c697c77b44ba5196ee0870Zhijun He * <p>When set to OFF, the camera device will not fire flash for this capture.</p> 98166d065a6d48cafe390c697c77b44ba5196ee0870Zhijun He * <p>When set to SINGLE, the camera device will fire flash regardless of the camera 98266d065a6d48cafe390c697c77b44ba5196ee0870Zhijun He * device's auto-exposure routine's result. When used in still capture case, this 98366d065a6d48cafe390c697c77b44ba5196ee0870Zhijun He * control should be used along with AE precapture metering sequence 98466d065a6d48cafe390c697c77b44ba5196ee0870Zhijun He * ({@link CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER android.control.aePrecaptureTrigger}), otherwise, the image may be incorrectly exposed.</p> 98566d065a6d48cafe390c697c77b44ba5196ee0870Zhijun He * <p>When set to TORCH, the flash will be on continuously. This mode can be used 98666d065a6d48cafe390c697c77b44ba5196ee0870Zhijun He * for use cases such as preview, auto-focus assist, still capture, or video recording.</p> 987ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * <p>The flash status will be reported by {@link CaptureResult#FLASH_STATE android.flash.state} in the capture result metadata.</p> 98866d065a6d48cafe390c697c77b44ba5196ee0870Zhijun He * 98966d065a6d48cafe390c697c77b44ba5196ee0870Zhijun He * @see CaptureRequest#CONTROL_AE_MODE 99066d065a6d48cafe390c697c77b44ba5196ee0870Zhijun He * @see CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER 99166d065a6d48cafe390c697c77b44ba5196ee0870Zhijun He * @see CameraCharacteristics#FLASH_INFO_AVAILABLE 992ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * @see CaptureResult#FLASH_STATE 9935a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #FLASH_MODE_OFF 9945a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #FLASH_MODE_SINGLE 9955a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #FLASH_MODE_TORCH 9965a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 9975a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Integer> FLASH_MODE = 9985a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Integer>("android.flash.mode", int.class); 9995a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 10005a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1001ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Current state of the flash 1002ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * unit.</p> 1003ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * <p>When the camera device doesn't have flash unit 1004ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * (i.e. <code>{@link CameraCharacteristics#FLASH_INFO_AVAILABLE android.flash.info.available} == false</code>), this state will always be UNAVAILABLE. 1005ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * Other states indicate the current flash status.</p> 1006ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * 1007ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * @see CameraCharacteristics#FLASH_INFO_AVAILABLE 10085a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #FLASH_STATE_UNAVAILABLE 10095a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #FLASH_STATE_CHARGING 10105a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #FLASH_STATE_READY 10115a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #FLASH_STATE_FIRED 10125a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 10135a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Integer> FLASH_STATE = 10145a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Integer>("android.flash.state", int.class); 10155a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 10165a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1017eba1b3a843278a92611edf153faa41a01d793b25Ruben Brunk * <p>List of <code>(x, y)</code> coordinates of hot/defective pixels on the 1018eba1b3a843278a92611edf153faa41a01d793b25Ruben Brunk * sensor, where <code>(x, y)</code> lies between <code>(0, 0)</code>, which is the top-left 1019eba1b3a843278a92611edf153faa41a01d793b25Ruben Brunk * of the pixel array, and the width,height of the pixel array given in 1020eba1b3a843278a92611edf153faa41a01d793b25Ruben Brunk * {@link CameraCharacteristics#SENSOR_INFO_PIXEL_ARRAY_SIZE android.sensor.info.pixelArraySize}. This may include hot pixels 1021eba1b3a843278a92611edf153faa41a01d793b25Ruben Brunk * that lie outside of the active array bounds given by 1022eba1b3a843278a92611edf153faa41a01d793b25Ruben Brunk * android.sensor.activeArraySize.</p> 1023eba1b3a843278a92611edf153faa41a01d793b25Ruben Brunk * 1024eba1b3a843278a92611edf153faa41a01d793b25Ruben Brunk * @see CameraCharacteristics#SENSOR_INFO_PIXEL_ARRAY_SIZE 1025eba1b3a843278a92611edf153faa41a01d793b25Ruben Brunk */ 1026eba1b3a843278a92611edf153faa41a01d793b25Ruben Brunk public static final Key<int[]> HOT_PIXEL_MAP = 1027eba1b3a843278a92611edf153faa41a01d793b25Ruben Brunk new Key<int[]>("android.hotPixel.map", int[].class); 1028eba1b3a843278a92611edf153faa41a01d793b25Ruben Brunk 1029eba1b3a843278a92611edf153faa41a01d793b25Ruben Brunk /** 1030eba1b3a843278a92611edf153faa41a01d793b25Ruben Brunk * <p>Set operational mode for hot pixel correction.</p> 1031eba1b3a843278a92611edf153faa41a01d793b25Ruben Brunk * <p>Hotpixel correction interpolates out, or otherwise removes, pixels 1032eba1b3a843278a92611edf153faa41a01d793b25Ruben Brunk * that do not accurately encode the incoming light (i.e. pixels that 1033eba1b3a843278a92611edf153faa41a01d793b25Ruben Brunk * are stuck at an arbitrary value).</p> 1034eba1b3a843278a92611edf153faa41a01d793b25Ruben Brunk * @see #HOT_PIXEL_MODE_OFF 1035eba1b3a843278a92611edf153faa41a01d793b25Ruben Brunk * @see #HOT_PIXEL_MODE_FAST 1036eba1b3a843278a92611edf153faa41a01d793b25Ruben Brunk * @see #HOT_PIXEL_MODE_HIGH_QUALITY 1037eba1b3a843278a92611edf153faa41a01d793b25Ruben Brunk */ 1038eba1b3a843278a92611edf153faa41a01d793b25Ruben Brunk public static final Key<Integer> HOT_PIXEL_MODE = 1039eba1b3a843278a92611edf153faa41a01d793b25Ruben Brunk new Key<Integer>("android.hotPixel.mode", int.class); 1040eba1b3a843278a92611edf153faa41a01d793b25Ruben Brunk 1041eba1b3a843278a92611edf153faa41a01d793b25Ruben Brunk /** 1042ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>GPS coordinates to include in output JPEG 1043ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * EXIF</p> 10445a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 10455a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<double[]> JPEG_GPS_COORDINATES = 10465a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<double[]>("android.jpeg.gpsCoordinates", double[].class); 10475a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 10485a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1049ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>32 characters describing GPS algorithm to 1050ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * include in EXIF</p> 10515a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 10525a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<String> JPEG_GPS_PROCESSING_METHOD = 10535a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<String>("android.jpeg.gpsProcessingMethod", String.class); 10545a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 10555a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1056ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Time GPS fix was made to include in 1057ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * EXIF</p> 10585a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 10595a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Long> JPEG_GPS_TIMESTAMP = 10605a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Long>("android.jpeg.gpsTimestamp", long.class); 10615a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 10625a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1063ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Orientation of JPEG image to 1064ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * write</p> 10655a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 10665a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Integer> JPEG_ORIENTATION = 10675a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Integer>("android.jpeg.orientation", int.class); 10685a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 10695a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1070ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Compression quality of the final JPEG 1071ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * image</p> 1072ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>85-95 is typical usage range</p> 10735a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 10745a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Byte> JPEG_QUALITY = 10755a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Byte>("android.jpeg.quality", byte.class); 10765a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 10775a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1078ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Compression quality of JPEG 1079ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * thumbnail</p> 10805a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 10815a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Byte> JPEG_THUMBNAIL_QUALITY = 10825a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Byte>("android.jpeg.thumbnailQuality", byte.class); 10835a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 10845a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 10855a9ff379233025bc85ebc41ac5979def09d3ebfaZhijun He * <p>Resolution of embedded JPEG thumbnail</p> 10865f2a47f3dedfc7859457067d8cdcdbfc28ee08acZhijun He * <p>When set to (0, 0) value, the JPEG EXIF will not contain thumbnail, 10875f2a47f3dedfc7859457067d8cdcdbfc28ee08acZhijun He * but the captured JPEG will still be a valid image.</p> 10885a9ff379233025bc85ebc41ac5979def09d3ebfaZhijun He * <p>When a jpeg image capture is issued, the thumbnail size selected should have 10895a9ff379233025bc85ebc41ac5979def09d3ebfaZhijun He * the same aspect ratio as the jpeg image.</p> 10905a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 10915a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<android.hardware.camera2.Size> JPEG_THUMBNAIL_SIZE = 10925a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<android.hardware.camera2.Size>("android.jpeg.thumbnailSize", android.hardware.camera2.Size.class); 10935a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 10945a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1095fb46c644ceffdd476268c35c7992c4e445bde0a5Zhijun He * <p>The ratio of lens focal length to the effective 1096fb46c644ceffdd476268c35c7992c4e445bde0a5Zhijun He * aperture diameter.</p> 1097fb46c644ceffdd476268c35c7992c4e445bde0a5Zhijun He * <p>This will only be supported on the camera devices that 1098fb46c644ceffdd476268c35c7992c4e445bde0a5Zhijun He * have variable aperture lens. The aperture value can only be 1099fb46c644ceffdd476268c35c7992c4e445bde0a5Zhijun He * one of the values listed in {@link CameraCharacteristics#LENS_INFO_AVAILABLE_APERTURES android.lens.info.availableApertures}.</p> 1100fb46c644ceffdd476268c35c7992c4e445bde0a5Zhijun He * <p>When this is supported and {@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode} is OFF, 1101fb46c644ceffdd476268c35c7992c4e445bde0a5Zhijun He * this can be set along with {@link CaptureRequest#SENSOR_EXPOSURE_TIME android.sensor.exposureTime}, 1102fb46c644ceffdd476268c35c7992c4e445bde0a5Zhijun He * {@link CaptureRequest#SENSOR_SENSITIVITY android.sensor.sensitivity}, and android.sensor.frameDuration 1103fb46c644ceffdd476268c35c7992c4e445bde0a5Zhijun He * to achieve manual exposure control.</p> 1104fb46c644ceffdd476268c35c7992c4e445bde0a5Zhijun He * <p>The requested aperture value may take several frames to reach the 1105fb46c644ceffdd476268c35c7992c4e445bde0a5Zhijun He * requested value; the camera device will report the current (intermediate) 1106ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * aperture size in capture result metadata while the aperture is changing. 1107ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * While the aperture is still changing, {@link CaptureResult#LENS_STATE android.lens.state} will be set to MOVING.</p> 1108fb46c644ceffdd476268c35c7992c4e445bde0a5Zhijun He * <p>When this is supported and {@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode} is one of 1109fb46c644ceffdd476268c35c7992c4e445bde0a5Zhijun He * the ON modes, this will be overridden by the camera device 1110fb46c644ceffdd476268c35c7992c4e445bde0a5Zhijun He * auto-exposure algorithm, the overridden values are then provided 1111fb46c644ceffdd476268c35c7992c4e445bde0a5Zhijun He * back to the user in the corresponding result.</p> 1112fb46c644ceffdd476268c35c7992c4e445bde0a5Zhijun He * 1113399f05d1e7182ef6c88d30d3b98a467b845ca7c4Zhijun He * @see CaptureRequest#CONTROL_AE_MODE 1114265b34ce331cbe296f82ca357645312718c8d4c7Eino-Ville Talvala * @see CameraCharacteristics#LENS_INFO_AVAILABLE_APERTURES 1115ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * @see CaptureResult#LENS_STATE 1116265b34ce331cbe296f82ca357645312718c8d4c7Eino-Ville Talvala * @see CaptureRequest#SENSOR_EXPOSURE_TIME 1117265b34ce331cbe296f82ca357645312718c8d4c7Eino-Ville Talvala * @see CaptureRequest#SENSOR_SENSITIVITY 11185a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 11195a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Float> LENS_APERTURE = 11205a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Float>("android.lens.aperture", float.class); 11215a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 11225a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1123855bae407d61b5cc6629248e7692927b4dacd92fRuben Brunk * <p>State of lens neutral density filter(s).</p> 1124855bae407d61b5cc6629248e7692927b4dacd92fRuben Brunk * <p>This will not be supported on most camera devices. On devices 1125855bae407d61b5cc6629248e7692927b4dacd92fRuben Brunk * where this is supported, this may only be set to one of the 1126855bae407d61b5cc6629248e7692927b4dacd92fRuben Brunk * values included in {@link CameraCharacteristics#LENS_INFO_AVAILABLE_FILTER_DENSITIES android.lens.info.availableFilterDensities}.</p> 1127855bae407d61b5cc6629248e7692927b4dacd92fRuben Brunk * <p>Lens filters are typically used to lower the amount of light the 1128855bae407d61b5cc6629248e7692927b4dacd92fRuben Brunk * sensor is exposed to (measured in steps of EV). As used here, an EV 1129855bae407d61b5cc6629248e7692927b4dacd92fRuben Brunk * step is the standard logarithmic representation, which are 1130855bae407d61b5cc6629248e7692927b4dacd92fRuben Brunk * non-negative, and inversely proportional to the amount of light 1131855bae407d61b5cc6629248e7692927b4dacd92fRuben Brunk * hitting the sensor. For example, setting this to 0 would result 1132855bae407d61b5cc6629248e7692927b4dacd92fRuben Brunk * in no reduction of the incoming light, and setting this to 2 would 1133855bae407d61b5cc6629248e7692927b4dacd92fRuben Brunk * mean that the filter is set to reduce incoming light by two stops 1134855bae407d61b5cc6629248e7692927b4dacd92fRuben Brunk * (allowing 1/4 of the prior amount of light to the sensor).</p> 1135ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * <p>It may take several frames before the lens filter density changes 1136ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * to the requested value. While the filter density is still changing, 1137ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * {@link CaptureResult#LENS_STATE android.lens.state} will be set to MOVING.</p> 1138855bae407d61b5cc6629248e7692927b4dacd92fRuben Brunk * 1139855bae407d61b5cc6629248e7692927b4dacd92fRuben Brunk * @see CameraCharacteristics#LENS_INFO_AVAILABLE_FILTER_DENSITIES 1140ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * @see CaptureResult#LENS_STATE 11415a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 11425a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Float> LENS_FILTER_DENSITY = 11435a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Float>("android.lens.filterDensity", float.class); 11445a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 11455a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1146a20f4c2648d7c597e3178978d17eb5894ef2b2b9Ruben Brunk * <p>The current lens focal length; used for optical zoom.</p> 1147a20f4c2648d7c597e3178978d17eb5894ef2b2b9Ruben Brunk * <p>This setting controls the physical focal length of the camera 1148a20f4c2648d7c597e3178978d17eb5894ef2b2b9Ruben Brunk * device's lens. Changing the focal length changes the field of 1149a20f4c2648d7c597e3178978d17eb5894ef2b2b9Ruben Brunk * view of the camera device, and is usually used for optical zoom.</p> 1150a20f4c2648d7c597e3178978d17eb5894ef2b2b9Ruben Brunk * <p>Like {@link CaptureRequest#LENS_FOCUS_DISTANCE android.lens.focusDistance} and {@link CaptureRequest#LENS_APERTURE android.lens.aperture}, this 1151a20f4c2648d7c597e3178978d17eb5894ef2b2b9Ruben Brunk * setting won't be applied instantaneously, and it may take several 1152ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * frames before the lens can change to the requested focal length. 1153a20f4c2648d7c597e3178978d17eb5894ef2b2b9Ruben Brunk * While the focal length is still changing, {@link CaptureResult#LENS_STATE android.lens.state} will 1154a20f4c2648d7c597e3178978d17eb5894ef2b2b9Ruben Brunk * be set to MOVING.</p> 1155a20f4c2648d7c597e3178978d17eb5894ef2b2b9Ruben Brunk * <p>This is expected not to be supported on most devices.</p> 1156a20f4c2648d7c597e3178978d17eb5894ef2b2b9Ruben Brunk * 1157a20f4c2648d7c597e3178978d17eb5894ef2b2b9Ruben Brunk * @see CaptureRequest#LENS_APERTURE 1158a20f4c2648d7c597e3178978d17eb5894ef2b2b9Ruben Brunk * @see CaptureRequest#LENS_FOCUS_DISTANCE 1159a20f4c2648d7c597e3178978d17eb5894ef2b2b9Ruben Brunk * @see CaptureResult#LENS_STATE 11605a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 11615a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Float> LENS_FOCAL_LENGTH = 11625a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Float>("android.lens.focalLength", float.class); 11635a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 11645a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1165ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Distance to plane of sharpest focus, 1166ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * measured from frontmost surface of the lens</p> 1167ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Should be zero for fixed-focus cameras</p> 11685a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 11695a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Float> LENS_FOCUS_DISTANCE = 11705a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Float>("android.lens.focusDistance", float.class); 11715a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 11725a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1173ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>The range of scene distances that are in 1174ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * sharp focus (depth of field)</p> 1175ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>If variable focus not supported, can still report 1176ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * fixed depth of field range</p> 11775a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 1178c59b078acb20e65ef53169891925f9cee017ba6fZhijun He public static final Key<float[]> LENS_FOCUS_RANGE = 1179c59b078acb20e65ef53169891925f9cee017ba6fZhijun He new Key<float[]>("android.lens.focusRange", float[].class); 11805a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 11815a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 118200849b3a430ce164af2db94eeacfd46131de4be8Ruben Brunk * <p>Sets whether the camera device uses optical image stabilization (OIS) 118300849b3a430ce164af2db94eeacfd46131de4be8Ruben Brunk * when capturing images.</p> 118400849b3a430ce164af2db94eeacfd46131de4be8Ruben Brunk * <p>OIS is used to compensate for motion blur due to small movements of 118500849b3a430ce164af2db94eeacfd46131de4be8Ruben Brunk * the camera during capture. Unlike digital image stabilization, OIS makes 118600849b3a430ce164af2db94eeacfd46131de4be8Ruben Brunk * use of mechanical elements to stabilize the camera sensor, and thus 118700849b3a430ce164af2db94eeacfd46131de4be8Ruben Brunk * allows for longer exposure times before camera shake becomes 118800849b3a430ce164af2db94eeacfd46131de4be8Ruben Brunk * apparent.</p> 118900849b3a430ce164af2db94eeacfd46131de4be8Ruben Brunk * <p>This is not expected to be supported on most devices.</p> 11905a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #LENS_OPTICAL_STABILIZATION_MODE_OFF 11915a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #LENS_OPTICAL_STABILIZATION_MODE_ON 11925a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 11935a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Integer> LENS_OPTICAL_STABILIZATION_MODE = 11945a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Integer>("android.lens.opticalStabilizationMode", int.class); 11955a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 11965a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1197ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * <p>Current lens status.</p> 1198ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * <p>For lens parameters {@link CaptureRequest#LENS_FOCAL_LENGTH android.lens.focalLength}, {@link CaptureRequest#LENS_FOCUS_DISTANCE android.lens.focusDistance}, 1199ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * {@link CaptureRequest#LENS_FILTER_DENSITY android.lens.filterDensity} and {@link CaptureRequest#LENS_APERTURE android.lens.aperture}, when changes are requested, 1200ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * they may take several frames to reach the requested values. This state indicates 1201ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * the current status of the lens parameters.</p> 1202ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * <p>When the state is STATIONARY, the lens parameters are not changing. This could be 1203ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * either because the parameters are all fixed, or because the lens has had enough 1204ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * time to reach the most recently-requested values. 1205ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * If all these lens parameters are not changable for a camera device, as listed below:</p> 1206ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * <ul> 1207ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * <li>Fixed focus (<code>{@link CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE android.lens.info.minimumFocusDistance} == 0</code>), which means 1208ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * {@link CaptureRequest#LENS_FOCUS_DISTANCE android.lens.focusDistance} parameter will always be 0.</li> 1209ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * <li>Fixed focal length ({@link CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS android.lens.info.availableFocalLengths} contains single value), 1210ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * which means the optical zoom is not supported.</li> 1211ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * <li>No ND filter ({@link CameraCharacteristics#LENS_INFO_AVAILABLE_FILTER_DENSITIES android.lens.info.availableFilterDensities} contains only 0).</li> 1212ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * <li>Fixed aperture ({@link CameraCharacteristics#LENS_INFO_AVAILABLE_APERTURES android.lens.info.availableApertures} contains single value).</li> 1213ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * </ul> 1214ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * <p>Then this state will always be STATIONARY.</p> 1215ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * <p>When the state is MOVING, it indicates that at least one of the lens parameters 1216ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * is changing.</p> 1217ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * 1218ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * @see CaptureRequest#LENS_APERTURE 1219ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * @see CaptureRequest#LENS_FILTER_DENSITY 1220ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * @see CaptureRequest#LENS_FOCAL_LENGTH 1221ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * @see CaptureRequest#LENS_FOCUS_DISTANCE 1222ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * @see CameraCharacteristics#LENS_INFO_AVAILABLE_APERTURES 1223ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * @see CameraCharacteristics#LENS_INFO_AVAILABLE_FILTER_DENSITIES 1224ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * @see CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS 1225ca1b73a5f4e8ae4a7cef2cb2127024d0ddb9e0e0Zhijun He * @see CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE 12265a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #LENS_STATE_STATIONARY 12279ea4ae67fb10a10c464db8372b58bfe574cac03dIgor Murashkin * @see #LENS_STATE_MOVING 12285a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 12295a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Integer> LENS_STATE = 12305a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Integer>("android.lens.state", int.class); 12315a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 12325a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1233ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Mode of operation for the noise reduction 1234ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * algorithm</p> 12352807936f5dfdeff25e9ace3482100511a69dcf13Zhijun He * <p>Noise filtering control. OFF means no noise reduction 12362807936f5dfdeff25e9ace3482100511a69dcf13Zhijun He * will be applied by the HAL.</p> 12375f2a47f3dedfc7859457067d8cdcdbfc28ee08acZhijun He * <p>FAST/HIGH_QUALITY both mean camera device determined noise filtering 12385f2a47f3dedfc7859457067d8cdcdbfc28ee08acZhijun He * will be applied. HIGH_QUALITY mode indicates that the camera device 12395f2a47f3dedfc7859457067d8cdcdbfc28ee08acZhijun He * will use the highest-quality noise filtering algorithms, 12405f2a47f3dedfc7859457067d8cdcdbfc28ee08acZhijun He * even if it slows down capture rate. FAST means the camera device should not 12412807936f5dfdeff25e9ace3482100511a69dcf13Zhijun He * slow down capture rate when applying noise filtering.</p> 12425a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #NOISE_REDUCTION_MODE_OFF 12435a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #NOISE_REDUCTION_MODE_FAST 12445a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #NOISE_REDUCTION_MODE_HIGH_QUALITY 12455a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 12465a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Integer> NOISE_REDUCTION_MODE = 12475a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Integer>("android.noiseReduction.mode", int.class); 12485a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 12495a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1250ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Whether a result given to the framework is the 12517a31310439b8ac6a9dca9e81dd3366221bbb1057Eino-Ville Talvala * final one for the capture, or only a partial that contains a 12527a31310439b8ac6a9dca9e81dd3366221bbb1057Eino-Ville Talvala * subset of the full set of dynamic metadata 1253ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * values.</p> 1254ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>The entries in the result metadata buffers for a 12557a31310439b8ac6a9dca9e81dd3366221bbb1057Eino-Ville Talvala * single capture may not overlap, except for this entry. The 12567a31310439b8ac6a9dca9e81dd3366221bbb1057Eino-Ville Talvala * FINAL buffers must retain FIFO ordering relative to the 12577a31310439b8ac6a9dca9e81dd3366221bbb1057Eino-Ville Talvala * requests that generate them, so the FINAL buffer for frame 3 must 12587a31310439b8ac6a9dca9e81dd3366221bbb1057Eino-Ville Talvala * always be sent to the framework after the FINAL buffer for frame 2, and 12597a31310439b8ac6a9dca9e81dd3366221bbb1057Eino-Ville Talvala * before the FINAL buffer for frame 4. PARTIAL buffers may be returned 12607a31310439b8ac6a9dca9e81dd3366221bbb1057Eino-Ville Talvala * in any order relative to other frames, but all PARTIAL buffers for a given 12617a31310439b8ac6a9dca9e81dd3366221bbb1057Eino-Ville Talvala * capture must arrive before the FINAL buffer for that capture. This entry may 1262ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * only be used by the HAL if quirks.usePartialResult is set to 1.</p> 12633242f4fb19b77bcd2435cbe710188d012d08b005Igor Murashkin * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> 12647a31310439b8ac6a9dca9e81dd3366221bbb1057Eino-Ville Talvala * @hide 12657a31310439b8ac6a9dca9e81dd3366221bbb1057Eino-Ville Talvala */ 12667a31310439b8ac6a9dca9e81dd3366221bbb1057Eino-Ville Talvala public static final Key<Boolean> QUIRKS_PARTIAL_RESULT = 12677a31310439b8ac6a9dca9e81dd3366221bbb1057Eino-Ville Talvala new Key<Boolean>("android.quirks.partialResult", boolean.class); 12687a31310439b8ac6a9dca9e81dd3366221bbb1057Eino-Ville Talvala 12697a31310439b8ac6a9dca9e81dd3366221bbb1057Eino-Ville Talvala /** 1270ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>A frame counter set by the framework. This value monotonically 12716bbf9dc5ae7ebc85991dcfe3e18e837b12d3f333Igor Murashkin * increases with every new result (that is, each new result has a unique 1272ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * frameCount value).</p> 1273ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Reset on release()</p> 12745a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 12755a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Integer> REQUEST_FRAME_COUNT = 12765a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Integer>("android.request.frameCount", int.class); 12775a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 12785a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1279ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>An application-specified ID for the current 12805a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * request. Must be maintained unchanged in output 1281ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * frame</p> 12825a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @hide 12835a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 12845a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Integer> REQUEST_ID = 12855a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Integer>("android.request.id", int.class); 12865a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 12875a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1288c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin * <p>Specifies the number of pipeline stages the frame went 1289c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin * through from when it was exposed to when the final completed result 1290c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin * was available to the framework.</p> 1291c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin * <p>Depending on what settings are used in the request, and 1292c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin * what streams are configured, the data may undergo less processing, 1293c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin * and some pipeline stages skipped.</p> 1294c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin * <p>See {@link CameraCharacteristics#REQUEST_PIPELINE_MAX_DEPTH android.request.pipelineMaxDepth} for more details.</p> 1295c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin * 1296c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin * @see CameraCharacteristics#REQUEST_PIPELINE_MAX_DEPTH 1297c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin */ 1298c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin public static final Key<Byte> REQUEST_PIPELINE_DEPTH = 1299c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin new Key<Byte>("android.request.pipelineDepth", byte.class); 1300c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin 1301c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin /** 1302ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>(x, y, width, height).</p> 1303ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>A rectangle with the top-level corner of (x,y) and size 13045a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * (width, height). The region of the sensor that is used for 13055a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * output. Each stream must use this rectangle to produce its 13065a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * output, cropping to a smaller region if necessary to 1307ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * maintain the stream's aspect ratio.</p> 1308ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>HAL2.x uses only (x, y, width)</p> 1309ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Any additional per-stream cropping must be done to 1310ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * maximize the final pixel area of the stream.</p> 1311ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>For example, if the crop region is set to a 4:3 aspect 13125a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * ratio, then 4:3 streams should use the exact crop 13135a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * region. 16:9 streams should further crop vertically 1314ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * (letterbox).</p> 1315ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Conversely, if the crop region is set to a 16:9, then 4:3 13165a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * outputs should crop horizontally (pillarbox), and 16:9 13175a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * streams should match exactly. These additional crops must 1318ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * be centered within the crop region.</p> 1319ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>The output streams must maintain square pixels at all 13205a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * times, no matter what the relative aspect ratios of the 13215a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * crop region and the stream are. Negative values for 13225a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * corner are allowed for raw output if full pixel array is 13235a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * larger than active pixel array. Width and height may be 13245a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * rounded to nearest larger supportable width, especially 13255a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * for raw output, where only a few fixed scales may be 13265a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * possible. The width and height of the crop region cannot 13275a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * be set to be smaller than floor( activeArraySize.width / 13285a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * android.scaler.maxDigitalZoom ) and floor( 13295a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * activeArraySize.height / android.scaler.maxDigitalZoom), 1330ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * respectively.</p> 13315a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 13325a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<android.graphics.Rect> SCALER_CROP_REGION = 13335a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<android.graphics.Rect>("android.scaler.cropRegion", android.graphics.Rect.class); 13345a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 13355a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1336ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Duration each pixel is exposed to 1337ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * light.</p> 1338ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>If the sensor can't expose this exact duration, it should shorten the 1339ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * duration exposed to the nearest possible value (rather than expose longer).</p> 1340ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>1/10000 - 30 sec range. No bulb mode</p> 13415a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 13425a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Long> SENSOR_EXPOSURE_TIME = 13435a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Long>("android.sensor.exposureTime", long.class); 13445a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 13455a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1346ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Duration from start of frame exposure to 1347143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * start of next frame exposure.</p> 1348143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * <p>The maximum frame rate that can be supported by a camera subsystem is 1349143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * a function of many factors:</p> 1350143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * <ul> 1351143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * <li>Requested resolutions of output image streams</li> 1352143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * <li>Availability of binning / skipping modes on the imager</li> 1353143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * <li>The bandwidth of the imager interface</li> 1354143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * <li>The bandwidth of the various ISP processing blocks</li> 1355143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * </ul> 1356143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * <p>Since these factors can vary greatly between different ISPs and 1357143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * sensors, the camera abstraction tries to represent the bandwidth 1358143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * restrictions with as simple a model as possible.</p> 1359143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * <p>The model presented has the following characteristics:</p> 1360143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * <ul> 1361143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * <li>The image sensor is always configured to output the smallest 1362143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * resolution possible given the application's requested output stream 1363143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * sizes. The smallest resolution is defined as being at least as large 1364143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * as the largest requested output stream size; the camera pipeline must 1365143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * never digitally upsample sensor data when the crop region covers the 1366143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * whole sensor. In general, this means that if only small output stream 1367143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * resolutions are configured, the sensor can provide a higher frame 1368143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * rate.</li> 1369143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * <li>Since any request may use any or all the currently configured 1370143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * output streams, the sensor and ISP must be configured to support 1371143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * scaling a single capture to all the streams at the same time. This 1372143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * means the camera pipeline must be ready to produce the largest 1373143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * requested output size without any delay. Therefore, the overall 1374143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * frame rate of a given configured stream set is governed only by the 1375143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * largest requested stream resolution.</li> 1376143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * <li>Using more than one output stream in a request does not affect the 1377143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * frame duration.</li> 1378143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * <li>JPEG streams act like processed YUV streams in requests for which 1379143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * they are not included; in requests in which they are directly 1380143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * referenced, they act as JPEG streams. This is because supporting a 1381143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * JPEG stream requires the underlying YUV data to always be ready for 1382143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * use by a JPEG encoder, but the encoder will only be used (and impact 1383143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * frame duration) on requests that actually reference a JPEG stream.</li> 1384143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * <li>The JPEG processor can run concurrently to the rest of the camera 1385143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * pipeline, but cannot process more than 1 capture at a time.</li> 1386143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * </ul> 1387143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * <p>The necessary information for the application, given the model above, 1388143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * is provided via the android.scaler.available*MinDurations fields. 1389143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * These are used to determine the maximum frame rate / minimum frame 1390143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * duration that is possible for a given stream configuration.</p> 1391143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * <p>Specifically, the application can use the following rules to 1392143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * determine the minimum frame duration it can request from the HAL 1393143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * device:</p> 1394143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * <ol> 1395143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * <li>Given the application's currently configured set of output 1396143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * streams, <code>S</code>, divide them into three sets: streams in a JPEG format 1397143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * <code>SJ</code>, streams in a raw sensor format <code>SR</code>, and the rest ('processed') 1398143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * <code>SP</code>.</li> 1399143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * <li>For each subset of streams, find the largest resolution (by pixel 1400143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * count) in the subset. This gives (at most) three resolutions <code>RJ</code>, 1401143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * <code>RR</code>, and <code>RP</code>.</li> 1402143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * <li>If <code>RJ</code> is greater than <code>RP</code>, set <code>RP</code> equal to <code>RJ</code>. If there is 1403143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * no exact match for <code>RP == RJ</code> (in particular there isn't an available 1404143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * processed resolution at the same size as <code>RJ</code>), then set <code>RP</code> equal 1405143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * to the smallest processed resolution that is larger than <code>RJ</code>. If 1406143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * there are no processed resolutions larger than <code>RJ</code>, then set <code>RJ</code> to 1407143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * the processed resolution closest to <code>RJ</code>.</li> 1408143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * <li>If <code>RP</code> is greater than <code>RR</code>, set <code>RR</code> equal to <code>RP</code>. If there is 1409143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * no exact match for <code>RR == RP</code> (in particular there isn't an available 1410143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * raw resolution at the same size as <code>RP</code>), then set <code>RR</code> equal to 1411143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * or to the smallest raw resolution that is larger than <code>RP</code>. If 1412143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * there are no raw resolutions larger than <code>RP</code>, then set <code>RR</code> to 1413143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * the raw resolution closest to <code>RP</code>.</li> 1414143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * <li>Look up the matching minimum frame durations in the property lists 1415143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * {@link CameraCharacteristics#SCALER_AVAILABLE_JPEG_MIN_DURATIONS android.scaler.availableJpegMinDurations}, 1416143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * android.scaler.availableRawMinDurations, and 1417143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * {@link CameraCharacteristics#SCALER_AVAILABLE_PROCESSED_MIN_DURATIONS android.scaler.availableProcessedMinDurations}. This gives three 1418143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * minimum frame durations <code>FJ</code>, <code>FR</code>, and <code>FP</code>.</li> 1419143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * <li>If a stream of requests do not use a JPEG stream, then the minimum 1420143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * supported frame duration for each request is <code>max(FR, FP)</code>.</li> 1421143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * <li>If a stream of requests all use the JPEG stream, then the minimum 1422143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * supported frame duration for each request is <code>max(FR, FP, FJ)</code>.</li> 1423143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * <li>If a mix of JPEG-using and non-JPEG-using requests is submitted by 1424143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * the application, then the HAL will have to delay JPEG-using requests 1425143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * whenever the JPEG encoder is still busy processing an older capture. 1426143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * This will happen whenever a JPEG-using request starts capture less 1427143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * than <code>FJ</code> <em>ns</em> after a previous JPEG-using request. The minimum 1428143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * supported frame duration will vary between the values calculated in 1429143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * #6 and #7.</li> 1430143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * </ol> 1431143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * 1432143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * @see CameraCharacteristics#SCALER_AVAILABLE_JPEG_MIN_DURATIONS 1433143aa0b891b2f8bf8ffabf8c53966c3cf97e9eb0Igor Murashkin * @see CameraCharacteristics#SCALER_AVAILABLE_PROCESSED_MIN_DURATIONS 14345a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 14355a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Long> SENSOR_FRAME_DURATION = 14365a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Long>("android.sensor.frameDuration", long.class); 14375a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 14385a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1439ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Gain applied to image data. Must be 14405a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * implemented through analog gain only if set to values 1441ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * below 'maximum analog sensitivity'.</p> 1442ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>If the sensor can't apply this exact gain, it should lessen the 1443ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * gain to the nearest possible value (rather than gain more).</p> 1444ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>ISO 12232:2006 REI method</p> 14455a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 14465a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Integer> SENSOR_SENSITIVITY = 14475a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Integer>("android.sensor.sensitivity", int.class); 14485a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 14495a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1450ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Time at start of exposure of first 1451ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * row</p> 1452ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Monotonic, should be synced to other timestamps in 1453ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * system</p> 14545a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 14555a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Long> SENSOR_TIMESTAMP = 14565a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Long>("android.sensor.timestamp", long.class); 14575a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 14585a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1459ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>The temperature of the sensor, sampled at the time 1460ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * exposure began for this frame.</p> 1461ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>The thermal diode being queried should be inside the sensor PCB, or 1462ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * somewhere close to it.</p> 14633242f4fb19b77bcd2435cbe710188d012d08b005Igor Murashkin * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> 14643242f4fb19b77bcd2435cbe710188d012d08b005Igor Murashkin * <p><b>Full capability</b> - 14653242f4fb19b77bcd2435cbe710188d012d08b005Igor Murashkin * Present on all camera devices that report being {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_FULL HARDWARE_LEVEL_FULL} devices in the 14663242f4fb19b77bcd2435cbe710188d012d08b005Igor Murashkin * {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL android.info.supportedHardwareLevel} key</p> 14673242f4fb19b77bcd2435cbe710188d012d08b005Igor Murashkin * 14683242f4fb19b77bcd2435cbe710188d012d08b005Igor Murashkin * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL 1469d5ff06a2ce4a65615ce5e8b8df93f2c3da2a8bbdIgor Murashkin */ 1470d5ff06a2ce4a65615ce5e8b8df93f2c3da2a8bbdIgor Murashkin public static final Key<Float> SENSOR_TEMPERATURE = 1471d5ff06a2ce4a65615ce5e8b8df93f2c3da2a8bbdIgor Murashkin new Key<Float>("android.sensor.temperature", float.class); 1472d5ff06a2ce4a65615ce5e8b8df93f2c3da2a8bbdIgor Murashkin 1473d5ff06a2ce4a65615ce5e8b8df93f2c3da2a8bbdIgor Murashkin /** 147420c76f67585172684729d701586a4a294d67f0a1Ruben Brunk * <p>The estimated white balance at the time of capture.</p> 147520c76f67585172684729d701586a4a294d67f0a1Ruben Brunk * <p>The estimated white balance encoded as the RGB values of the 147620c76f67585172684729d701586a4a294d67f0a1Ruben Brunk * perfectly neutral color point in the linear native sensor color space. 147720c76f67585172684729d701586a4a294d67f0a1Ruben Brunk * The order of the values is R, G, B; where R is in the lowest index.</p> 147820c76f67585172684729d701586a4a294d67f0a1Ruben Brunk * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> 147920c76f67585172684729d701586a4a294d67f0a1Ruben Brunk */ 148020c76f67585172684729d701586a4a294d67f0a1Ruben Brunk public static final Key<Rational[]> SENSOR_NEUTRAL_COLOR_POINT = 148120c76f67585172684729d701586a4a294d67f0a1Ruben Brunk new Key<Rational[]>("android.sensor.neutralColorPoint", Rational[].class); 148220c76f67585172684729d701586a4a294d67f0a1Ruben Brunk 148320c76f67585172684729d701586a4a294d67f0a1Ruben Brunk /** 1484a9bfdbbb35cb6c93e943b8ab809d95d68d3da46eRuben Brunk * <p>A mapping containing a hue shift, saturation scale, and value scale 1485a9bfdbbb35cb6c93e943b8ab809d95d68d3da46eRuben Brunk * for each pixel.</p> 1486a9bfdbbb35cb6c93e943b8ab809d95d68d3da46eRuben Brunk * <p>hue_samples, saturation_samples, and value_samples are given in 1487a9bfdbbb35cb6c93e943b8ab809d95d68d3da46eRuben Brunk * {@link CameraCharacteristics#SENSOR_PROFILE_HUE_SAT_MAP_DIMENSIONS android.sensor.profileHueSatMapDimensions}.</p> 1488a9bfdbbb35cb6c93e943b8ab809d95d68d3da46eRuben Brunk * <p>Each entry of this map contains three floats corresponding to the 1489a9bfdbbb35cb6c93e943b8ab809d95d68d3da46eRuben Brunk * hue shift, saturation scale, and value scale, respectively; where the 1490a9bfdbbb35cb6c93e943b8ab809d95d68d3da46eRuben Brunk * hue shift has the lowest index. The map entries are stored in the tag 1491a9bfdbbb35cb6c93e943b8ab809d95d68d3da46eRuben Brunk * in nested loop order, with the value divisions in the outer loop, the 1492a9bfdbbb35cb6c93e943b8ab809d95d68d3da46eRuben Brunk * hue divisions in the middle loop, and the saturation divisions in the 1493a9bfdbbb35cb6c93e943b8ab809d95d68d3da46eRuben Brunk * inner loop. All zero input saturation entries are required to have a 1494a9bfdbbb35cb6c93e943b8ab809d95d68d3da46eRuben Brunk * value scale factor of 1.0.</p> 1495a9bfdbbb35cb6c93e943b8ab809d95d68d3da46eRuben Brunk * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> 1496a9bfdbbb35cb6c93e943b8ab809d95d68d3da46eRuben Brunk * 1497a9bfdbbb35cb6c93e943b8ab809d95d68d3da46eRuben Brunk * @see CameraCharacteristics#SENSOR_PROFILE_HUE_SAT_MAP_DIMENSIONS 1498a9bfdbbb35cb6c93e943b8ab809d95d68d3da46eRuben Brunk */ 1499a9bfdbbb35cb6c93e943b8ab809d95d68d3da46eRuben Brunk public static final Key<float[]> SENSOR_PROFILE_HUE_SAT_MAP = 1500a9bfdbbb35cb6c93e943b8ab809d95d68d3da46eRuben Brunk new Key<float[]>("android.sensor.profileHueSatMap", float[].class); 1501a9bfdbbb35cb6c93e943b8ab809d95d68d3da46eRuben Brunk 1502a9bfdbbb35cb6c93e943b8ab809d95d68d3da46eRuben Brunk /** 1503a9bfdbbb35cb6c93e943b8ab809d95d68d3da46eRuben Brunk * <p>A list of x,y samples defining a tone-mapping curve for gamma adjustment.</p> 1504a9bfdbbb35cb6c93e943b8ab809d95d68d3da46eRuben Brunk * <p>This tag contains a default tone curve that can be applied while 1505a9bfdbbb35cb6c93e943b8ab809d95d68d3da46eRuben Brunk * processing the image as a starting point for user adjustments. 1506a9bfdbbb35cb6c93e943b8ab809d95d68d3da46eRuben Brunk * The curve is specified as a list of value pairs in linear gamma. 1507a9bfdbbb35cb6c93e943b8ab809d95d68d3da46eRuben Brunk * The curve is interpolated using a cubic spline.</p> 1508a9bfdbbb35cb6c93e943b8ab809d95d68d3da46eRuben Brunk * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> 1509a9bfdbbb35cb6c93e943b8ab809d95d68d3da46eRuben Brunk */ 1510a9bfdbbb35cb6c93e943b8ab809d95d68d3da46eRuben Brunk public static final Key<float[]> SENSOR_PROFILE_TONE_CURVE = 1511a9bfdbbb35cb6c93e943b8ab809d95d68d3da46eRuben Brunk new Key<float[]>("android.sensor.profileToneCurve", float[].class); 1512a9bfdbbb35cb6c93e943b8ab809d95d68d3da46eRuben Brunk 1513a9bfdbbb35cb6c93e943b8ab809d95d68d3da46eRuben Brunk /** 1514c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin * <p>When enabled, the sensor sends a test pattern instead of 1515c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin * doing a real exposure from the camera.</p> 1516c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin * <p>When a test pattern is enabled, all manual sensor controls specified 1517c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin * by android.sensor.* should be ignored. All other controls should 1518c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin * work as normal.</p> 1519c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin * <p>For example, if manual flash is enabled, flash firing should still 1520c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin * occur (and that the test pattern remain unmodified, since the flash 1521c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin * would not actually affect it).</p> 1522c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> 1523c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin * @see #SENSOR_TEST_PATTERN_MODE_OFF 1524c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin * @see #SENSOR_TEST_PATTERN_MODE_SOLID_COLOR 1525c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin * @see #SENSOR_TEST_PATTERN_MODE_COLOR_BARS 1526c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin * @see #SENSOR_TEST_PATTERN_MODE_COLOR_BARS_FADE_TO_GRAY 1527c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin * @see #SENSOR_TEST_PATTERN_MODE_PN9 1528c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin * @see #SENSOR_TEST_PATTERN_MODE_CUSTOM1 1529c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin */ 1530c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin public static final Key<Integer> SENSOR_TEST_PATTERN_MODE = 1531c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin new Key<Integer>("android.sensor.testPatternMode", int.class); 1532c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin 1533c127f05292919ef1646b08b16dca1fe7c324afd4Igor Murashkin /** 1534ba93fe6468ef14865ec341bc14fc4a1dc7e88704Zhijun He * <p>Quality of lens shading correction applied 1535ba93fe6468ef14865ec341bc14fc4a1dc7e88704Zhijun He * to the image data.</p> 1536ba93fe6468ef14865ec341bc14fc4a1dc7e88704Zhijun He * <p>When set to OFF mode, no lens shading correction will be applied by the 1537ba93fe6468ef14865ec341bc14fc4a1dc7e88704Zhijun He * camera device, and an identity lens shading map data will be provided 1538ba93fe6468ef14865ec341bc14fc4a1dc7e88704Zhijun He * if <code>{@link CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE android.statistics.lensShadingMapMode} == ON</code>. For example, for lens 1539ba93fe6468ef14865ec341bc14fc4a1dc7e88704Zhijun He * shading map with size specified as <code>{@link CameraCharacteristics#LENS_INFO_SHADING_MAP_SIZE android.lens.info.shadingMapSize} = [ 4, 3 ]</code>, 1540ba93fe6468ef14865ec341bc14fc4a1dc7e88704Zhijun He * the output {@link CaptureResult#STATISTICS_LENS_SHADING_MAP android.statistics.lensShadingMap} for this case will be an identity map 1541ba93fe6468ef14865ec341bc14fc4a1dc7e88704Zhijun He * shown below:</p> 1542ba93fe6468ef14865ec341bc14fc4a1dc7e88704Zhijun He * <pre><code>[ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1543ba93fe6468ef14865ec341bc14fc4a1dc7e88704Zhijun He * 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1544ba93fe6468ef14865ec341bc14fc4a1dc7e88704Zhijun He * 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1545ba93fe6468ef14865ec341bc14fc4a1dc7e88704Zhijun He * 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1546ba93fe6468ef14865ec341bc14fc4a1dc7e88704Zhijun He * 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1547ba93fe6468ef14865ec341bc14fc4a1dc7e88704Zhijun He * 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 ] 1548ba93fe6468ef14865ec341bc14fc4a1dc7e88704Zhijun He * </code></pre> 1549ba93fe6468ef14865ec341bc14fc4a1dc7e88704Zhijun He * <p>When set to other modes, lens shading correction will be applied by the 1550ba93fe6468ef14865ec341bc14fc4a1dc7e88704Zhijun He * camera device. Applications can request lens shading map data by setting 1551ba93fe6468ef14865ec341bc14fc4a1dc7e88704Zhijun He * {@link CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE android.statistics.lensShadingMapMode} to ON, and then the camera device will provide 1552ba93fe6468ef14865ec341bc14fc4a1dc7e88704Zhijun He * lens shading map data in {@link CaptureResult#STATISTICS_LENS_SHADING_MAP android.statistics.lensShadingMap}, with size specified 1553ba93fe6468ef14865ec341bc14fc4a1dc7e88704Zhijun He * by {@link CameraCharacteristics#LENS_INFO_SHADING_MAP_SIZE android.lens.info.shadingMapSize}.</p> 1554ba93fe6468ef14865ec341bc14fc4a1dc7e88704Zhijun He * 1555ba93fe6468ef14865ec341bc14fc4a1dc7e88704Zhijun He * @see CameraCharacteristics#LENS_INFO_SHADING_MAP_SIZE 1556ba93fe6468ef14865ec341bc14fc4a1dc7e88704Zhijun He * @see CaptureResult#STATISTICS_LENS_SHADING_MAP 1557ba93fe6468ef14865ec341bc14fc4a1dc7e88704Zhijun He * @see CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE 1558ba93fe6468ef14865ec341bc14fc4a1dc7e88704Zhijun He * @see #SHADING_MODE_OFF 1559ba93fe6468ef14865ec341bc14fc4a1dc7e88704Zhijun He * @see #SHADING_MODE_FAST 1560ba93fe6468ef14865ec341bc14fc4a1dc7e88704Zhijun He * @see #SHADING_MODE_HIGH_QUALITY 1561ba93fe6468ef14865ec341bc14fc4a1dc7e88704Zhijun He * @hide 1562ba93fe6468ef14865ec341bc14fc4a1dc7e88704Zhijun He */ 1563ba93fe6468ef14865ec341bc14fc4a1dc7e88704Zhijun He public static final Key<Integer> SHADING_MODE = 1564ba93fe6468ef14865ec341bc14fc4a1dc7e88704Zhijun He new Key<Integer>("android.shading.mode", int.class); 1565ba93fe6468ef14865ec341bc14fc4a1dc7e88704Zhijun He 1566ba93fe6468ef14865ec341bc14fc4a1dc7e88704Zhijun He /** 1567ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>State of the face detector 1568ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * unit</p> 1569ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Whether face detection is enabled, and whether it 15705a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * should output just the basic fields or the full set of 15715a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * fields. Value must be one of the 15720da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * {@link CameraCharacteristics#STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES android.statistics.info.availableFaceDetectModes}.</p> 15730da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * 15740da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * @see CameraCharacteristics#STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES 15755a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #STATISTICS_FACE_DETECT_MODE_OFF 15765a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #STATISTICS_FACE_DETECT_MODE_SIMPLE 15775a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #STATISTICS_FACE_DETECT_MODE_FULL 15785a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 15795a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Integer> STATISTICS_FACE_DETECT_MODE = 15805a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Integer>("android.statistics.faceDetectMode", int.class); 15815a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 15825a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1583ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>List of unique IDs for detected 1584ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * faces</p> 1585ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Only available if faceDetectMode == FULL</p> 15867f80d6f74125b25a23622719d27cb1cf0c6194f6Zhijun He * @hide 15875a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 15885a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<int[]> STATISTICS_FACE_IDS = 15895a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<int[]>("android.statistics.faceIds", int[].class); 15905a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 15915a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1592ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>List of landmarks for detected 1593ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * faces</p> 1594ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Only available if faceDetectMode == FULL</p> 15957f80d6f74125b25a23622719d27cb1cf0c6194f6Zhijun He * @hide 15965a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 15975a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<int[]> STATISTICS_FACE_LANDMARKS = 15985a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<int[]>("android.statistics.faceLandmarks", int[].class); 15995a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 16005a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1601ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>List of the bounding rectangles for detected 1602ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * faces</p> 1603ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Only available if faceDetectMode != OFF</p> 16047f80d6f74125b25a23622719d27cb1cf0c6194f6Zhijun He * @hide 16055a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 16065a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<android.graphics.Rect[]> STATISTICS_FACE_RECTANGLES = 16075a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<android.graphics.Rect[]>("android.statistics.faceRectangles", android.graphics.Rect[].class); 16085a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 16095a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1610ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>List of the face confidence scores for 1611ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * detected faces</p> 1612ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Only available if faceDetectMode != OFF. The value should be 1613ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * meaningful (for example, setting 100 at all times is illegal).</p> 16147f80d6f74125b25a23622719d27cb1cf0c6194f6Zhijun He * @hide 16155a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 16165a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<byte[]> STATISTICS_FACE_SCORES = 16175a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<byte[]>("android.statistics.faceScores", byte[].class); 16185a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 16195a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 16207a9b30e9e3e45d387d2fc0cb2bd2eb79da7dd268Igor Murashkin * <p>The shading map is a low-resolution floating-point map 16217a9b30e9e3e45d387d2fc0cb2bd2eb79da7dd268Igor Murashkin * that lists the coefficients used to correct for vignetting, for each 16227a9b30e9e3e45d387d2fc0cb2bd2eb79da7dd268Igor Murashkin * Bayer color channel.</p> 16237a9b30e9e3e45d387d2fc0cb2bd2eb79da7dd268Igor Murashkin * <p>The least shaded section of the image should have a gain factor 16247a9b30e9e3e45d387d2fc0cb2bd2eb79da7dd268Igor Murashkin * of 1; all other sections should have gains above 1.</p> 16250da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * <p>When {@link CaptureRequest#COLOR_CORRECTION_MODE android.colorCorrection.mode} = TRANSFORM_MATRIX, the map 1626ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * must take into account the colorCorrection settings.</p> 16277a9b30e9e3e45d387d2fc0cb2bd2eb79da7dd268Igor Murashkin * <p>The shading map is for the entire active pixel array, and is not 16287a9b30e9e3e45d387d2fc0cb2bd2eb79da7dd268Igor Murashkin * affected by the crop region specified in the request. Each shading map 16297a9b30e9e3e45d387d2fc0cb2bd2eb79da7dd268Igor Murashkin * entry is the value of the shading compensation map over a specific 16307a9b30e9e3e45d387d2fc0cb2bd2eb79da7dd268Igor Murashkin * pixel on the sensor. Specifically, with a (N x M) resolution shading 16317a9b30e9e3e45d387d2fc0cb2bd2eb79da7dd268Igor Murashkin * map, and an active pixel array size (W x H), shading map entry 16327a9b30e9e3e45d387d2fc0cb2bd2eb79da7dd268Igor Murashkin * (x,y) ϵ (0 ... N-1, 0 ... M-1) is the value of the shading map at 16337a9b30e9e3e45d387d2fc0cb2bd2eb79da7dd268Igor Murashkin * pixel ( ((W-1)/(N-1)) * x, ((H-1)/(M-1)) * y) for the four color channels. 16347a9b30e9e3e45d387d2fc0cb2bd2eb79da7dd268Igor Murashkin * The map is assumed to be bilinearly interpolated between the sample points.</p> 16357a9b30e9e3e45d387d2fc0cb2bd2eb79da7dd268Igor Murashkin * <p>The channel order is [R, Geven, Godd, B], where Geven is the green 16367a9b30e9e3e45d387d2fc0cb2bd2eb79da7dd268Igor Murashkin * channel for the even rows of a Bayer pattern, and Godd is the odd rows. 16377a9b30e9e3e45d387d2fc0cb2bd2eb79da7dd268Igor Murashkin * The shading map is stored in a fully interleaved format, and its size 16380da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * is provided in the camera static metadata by {@link CameraCharacteristics#LENS_INFO_SHADING_MAP_SIZE android.lens.info.shadingMapSize}.</p> 16397a9b30e9e3e45d387d2fc0cb2bd2eb79da7dd268Igor Murashkin * <p>The shading map should have on the order of 30-40 rows and columns, 16407a9b30e9e3e45d387d2fc0cb2bd2eb79da7dd268Igor Murashkin * and must be smaller than 64x64.</p> 16417a9b30e9e3e45d387d2fc0cb2bd2eb79da7dd268Igor Murashkin * <p>As an example, given a very small map defined as:</p> 16420da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * <pre><code>{@link CameraCharacteristics#LENS_INFO_SHADING_MAP_SIZE android.lens.info.shadingMapSize} = [ 4, 3 ] 16430da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * {@link CaptureResult#STATISTICS_LENS_SHADING_MAP android.statistics.lensShadingMap} = 16447a9b30e9e3e45d387d2fc0cb2bd2eb79da7dd268Igor Murashkin * [ 1.3, 1.2, 1.15, 1.2, 1.2, 1.2, 1.15, 1.2, 16450da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * 1.1, 1.2, 1.2, 1.2, 1.3, 1.2, 1.3, 1.3, 16460da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * 1.2, 1.2, 1.25, 1.1, 1.1, 1.1, 1.1, 1.0, 16470da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * 1.0, 1.0, 1.0, 1.0, 1.2, 1.3, 1.25, 1.2, 16480da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * 1.3, 1.2, 1.2, 1.3, 1.2, 1.15, 1.1, 1.2, 16490da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * 1.2, 1.1, 1.0, 1.2, 1.3, 1.15, 1.2, 1.3 ] 16507a9b30e9e3e45d387d2fc0cb2bd2eb79da7dd268Igor Murashkin * </code></pre> 16517a9b30e9e3e45d387d2fc0cb2bd2eb79da7dd268Igor Murashkin * <p>The low-resolution scaling map images for each channel are 16527a9b30e9e3e45d387d2fc0cb2bd2eb79da7dd268Igor Murashkin * (displayed using nearest-neighbor interpolation):</p> 16537a9b30e9e3e45d387d2fc0cb2bd2eb79da7dd268Igor Murashkin * <p><img alt="Red lens shading map" src="../../../../images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png" /> 16547a9b30e9e3e45d387d2fc0cb2bd2eb79da7dd268Igor Murashkin * <img alt="Green (even rows) lens shading map" src="../../../../images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png" /> 16557a9b30e9e3e45d387d2fc0cb2bd2eb79da7dd268Igor Murashkin * <img alt="Green (odd rows) lens shading map" src="../../../../images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png" /> 16567a9b30e9e3e45d387d2fc0cb2bd2eb79da7dd268Igor Murashkin * <img alt="Blue lens shading map" src="../../../../images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png" /></p> 16577a9b30e9e3e45d387d2fc0cb2bd2eb79da7dd268Igor Murashkin * <p>As a visualization only, inverting the full-color map to recover an 16587a9b30e9e3e45d387d2fc0cb2bd2eb79da7dd268Igor Murashkin * image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p> 16597a9b30e9e3e45d387d2fc0cb2bd2eb79da7dd268Igor Murashkin * <p><img alt="Image of a uniform white wall (inverse shading map)" src="../../../../images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png" /></p> 16600da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * 16615f2a47f3dedfc7859457067d8cdcdbfc28ee08acZhijun He * @see CaptureRequest#COLOR_CORRECTION_MODE 16620da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * @see CameraCharacteristics#LENS_INFO_SHADING_MAP_SIZE 1663265b34ce331cbe296f82ca357645312718c8d4c7Eino-Ville Talvala * @see CaptureResult#STATISTICS_LENS_SHADING_MAP 16645a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 16655a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<float[]> STATISTICS_LENS_SHADING_MAP = 16665a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<float[]>("android.statistics.lensShadingMap", float[].class); 16675a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 16685a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1669ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>The best-fit color channel gains calculated 1670ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * by the HAL's statistics units for the current output frame</p> 1671ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>This may be different than the gains used for this frame, 16725a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * since statistics processing on data from a new frame 16735a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * typically completes after the transform has already been 1674ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * applied to that frame.</p> 1675ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>The 4 channel gains are defined in Bayer domain, 16760da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * see {@link CaptureRequest#COLOR_CORRECTION_GAINS android.colorCorrection.gains} for details.</p> 1677ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>This value should always be calculated by the AWB block, 1678ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * regardless of the android.control.* current values.</p> 1679aef3b7ed9f2a27aed9aecef030432d1100a60406Igor Murashkin * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> 16800da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * 16810da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * @see CaptureRequest#COLOR_CORRECTION_GAINS 1682aef3b7ed9f2a27aed9aecef030432d1100a60406Igor Murashkin * @hide 16835a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 16845a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<float[]> STATISTICS_PREDICTED_COLOR_GAINS = 16855a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<float[]>("android.statistics.predictedColorGains", float[].class); 16865a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 16875a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1688ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>The best-fit color transform matrix estimate 16895a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * calculated by the HAL's statistics units for the current 1690ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * output frame</p> 1691ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>The HAL must provide the estimate from its 16925a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * statistics unit on the white balance transforms to use 16935a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * for the next frame. These are the values the HAL believes 16945a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * are the best fit for the current output frame. This may 16955a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * be different than the transform used for this frame, since 16965a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * statistics processing on data from a new frame typically 16975a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * completes after the transform has already been applied to 1698ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * that frame.</p> 1699ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>These estimates must be provided for all frames, even if 1700ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * capture settings and color transforms are set by the application.</p> 1701ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>This value should always be calculated by the AWB block, 1702ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * regardless of the android.control.* current values.</p> 1703aef3b7ed9f2a27aed9aecef030432d1100a60406Igor Murashkin * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> 1704aef3b7ed9f2a27aed9aecef030432d1100a60406Igor Murashkin * @hide 17055a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 17065a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Rational[]> STATISTICS_PREDICTED_COLOR_TRANSFORM = 17075a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Rational[]>("android.statistics.predictedColorTransform", Rational[].class); 17085a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 17095a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1710208fb6c321acb7bcc3b666633e1ada03d2799cb0Zhijun He * <p>The camera device estimated scene illumination lighting 1711208fb6c321acb7bcc3b666633e1ada03d2799cb0Zhijun He * frequency.</p> 1712208fb6c321acb7bcc3b666633e1ada03d2799cb0Zhijun He * <p>Many light sources, such as most fluorescent lights, flicker at a rate 1713208fb6c321acb7bcc3b666633e1ada03d2799cb0Zhijun He * that depends on the local utility power standards. This flicker must be 1714208fb6c321acb7bcc3b666633e1ada03d2799cb0Zhijun He * accounted for by auto-exposure routines to avoid artifacts in captured images. 1715208fb6c321acb7bcc3b666633e1ada03d2799cb0Zhijun He * The camera device uses this entry to tell the application what the scene 1716208fb6c321acb7bcc3b666633e1ada03d2799cb0Zhijun He * illuminant frequency is.</p> 1717208fb6c321acb7bcc3b666633e1ada03d2799cb0Zhijun He * <p>When manual exposure control is enabled 1718208fb6c321acb7bcc3b666633e1ada03d2799cb0Zhijun He * (<code>{@link CaptureRequest#CONTROL_AE_MODE android.control.aeMode} == OFF</code> or <code>{@link CaptureRequest#CONTROL_MODE android.control.mode} == OFF</code>), 1719208fb6c321acb7bcc3b666633e1ada03d2799cb0Zhijun He * the {@link CaptureRequest#CONTROL_AE_ANTIBANDING_MODE android.control.aeAntibandingMode} doesn't do the antibanding, and the 1720208fb6c321acb7bcc3b666633e1ada03d2799cb0Zhijun He * application can ensure it selects exposure times that do not cause banding 1721208fb6c321acb7bcc3b666633e1ada03d2799cb0Zhijun He * issues by looking into this metadata field. See android.control.aeAntibandingMode 1722208fb6c321acb7bcc3b666633e1ada03d2799cb0Zhijun He * for more details.</p> 1723208fb6c321acb7bcc3b666633e1ada03d2799cb0Zhijun He * <p>Report NONE if there doesn't appear to be flickering illumination.</p> 1724208fb6c321acb7bcc3b666633e1ada03d2799cb0Zhijun He * 1725208fb6c321acb7bcc3b666633e1ada03d2799cb0Zhijun He * @see CaptureRequest#CONTROL_AE_ANTIBANDING_MODE 1726208fb6c321acb7bcc3b666633e1ada03d2799cb0Zhijun He * @see CaptureRequest#CONTROL_AE_MODE 1727208fb6c321acb7bcc3b666633e1ada03d2799cb0Zhijun He * @see CaptureRequest#CONTROL_MODE 17285a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #STATISTICS_SCENE_FLICKER_NONE 17295a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #STATISTICS_SCENE_FLICKER_50HZ 17305a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #STATISTICS_SCENE_FLICKER_60HZ 17315a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 17325a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Integer> STATISTICS_SCENE_FLICKER = 17335a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Integer>("android.statistics.sceneFlicker", int.class); 17345a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 17355a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1736ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Tonemapping / contrast / gamma curve for the blue 1737e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * channel, to use when {@link CaptureRequest#TONEMAP_MODE android.tonemap.mode} is 1738e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * CONTRAST_CURVE.</p> 17390da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * <p>See {@link CaptureRequest#TONEMAP_CURVE_RED android.tonemap.curveRed} for more details.</p> 17400da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * 17413242f4fb19b77bcd2435cbe710188d012d08b005Igor Murashkin * @see CaptureRequest#TONEMAP_CURVE_RED 17425f2a47f3dedfc7859457067d8cdcdbfc28ee08acZhijun He * @see CaptureRequest#TONEMAP_MODE 17435a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 17443ffd70554f85bd1ee54354f2d5c44e1bc0878227Zhijun He public static final Key<float[]> TONEMAP_CURVE_BLUE = 17453ffd70554f85bd1ee54354f2d5c44e1bc0878227Zhijun He new Key<float[]>("android.tonemap.curveBlue", float[].class); 17465a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 17475a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1748ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Tonemapping / contrast / gamma curve for the green 1749e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * channel, to use when {@link CaptureRequest#TONEMAP_MODE android.tonemap.mode} is 1750e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * CONTRAST_CURVE.</p> 17510da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * <p>See {@link CaptureRequest#TONEMAP_CURVE_RED android.tonemap.curveRed} for more details.</p> 17520da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * 17533242f4fb19b77bcd2435cbe710188d012d08b005Igor Murashkin * @see CaptureRequest#TONEMAP_CURVE_RED 17545f2a47f3dedfc7859457067d8cdcdbfc28ee08acZhijun He * @see CaptureRequest#TONEMAP_MODE 17555a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 17563ffd70554f85bd1ee54354f2d5c44e1bc0878227Zhijun He public static final Key<float[]> TONEMAP_CURVE_GREEN = 17573ffd70554f85bd1ee54354f2d5c44e1bc0878227Zhijun He new Key<float[]>("android.tonemap.curveGreen", float[].class); 17585a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 17595a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1760ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Tonemapping / contrast / gamma curve for the red 1761e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * channel, to use when {@link CaptureRequest#TONEMAP_MODE android.tonemap.mode} is 1762e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * CONTRAST_CURVE.</p> 1763e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * <p>Each channel's curve is defined by an array of control points:</p> 1764e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * <pre><code>{@link CaptureRequest#TONEMAP_CURVE_RED android.tonemap.curveRed} = 1765e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * [ P0in, P0out, P1in, P1out, P2in, P2out, P3in, P3out, ..., PNin, PNout ] 1766e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * 2 &lt;= N &lt;= {@link CameraCharacteristics#TONEMAP_MAX_CURVE_POINTS android.tonemap.maxCurvePoints}</code></pre> 1767e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * <p>These are sorted in order of increasing <code>Pin</code>; it is always 1768e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * guaranteed that input values 0.0 and 1.0 are included in the list to 1769e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * define a complete mapping. For input values between control points, 1770e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * the camera device must linearly interpolate between the control 1771e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * points.</p> 1772e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * <p>Each curve can have an independent number of points, and the number 1773e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * of points can be less than max (that is, the request doesn't have to 1774e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * always provide a curve with number of points equivalent to 1775e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * {@link CameraCharacteristics#TONEMAP_MAX_CURVE_POINTS android.tonemap.maxCurvePoints}).</p> 1776e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * <p>A few examples, and their corresponding graphical mappings; these 1777e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * only specify the red channel and the precision is limited to 4 1778e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * digits, for conciseness.</p> 1779e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * <p>Linear mapping:</p> 1780e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * <pre><code>{@link CaptureRequest#TONEMAP_CURVE_RED android.tonemap.curveRed} = [ 0, 0, 1.0, 1.0 ] 1781e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * </code></pre> 1782e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * <p><img alt="Linear mapping curve" src="../../../../images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png" /></p> 1783e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * <p>Invert mapping:</p> 1784e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * <pre><code>{@link CaptureRequest#TONEMAP_CURVE_RED android.tonemap.curveRed} = [ 0, 1.0, 1.0, 0 ] 1785e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * </code></pre> 1786e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * <p><img alt="Inverting mapping curve" src="../../../../images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png" /></p> 1787e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * <p>Gamma 1/2.2 mapping, with 16 control points:</p> 1788e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * <pre><code>{@link CaptureRequest#TONEMAP_CURVE_RED android.tonemap.curveRed} = [ 1789e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * 0.0000, 0.0000, 0.0667, 0.2920, 0.1333, 0.4002, 0.2000, 0.4812, 1790e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * 0.2667, 0.5484, 0.3333, 0.6069, 0.4000, 0.6594, 0.4667, 0.7072, 1791e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * 0.5333, 0.7515, 0.6000, 0.7928, 0.6667, 0.8317, 0.7333, 0.8685, 1792e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * 0.8000, 0.9035, 0.8667, 0.9370, 0.9333, 0.9691, 1.0000, 1.0000 ] 1793e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * </code></pre> 1794e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * <p><img alt="Gamma = 1/2.2 tonemapping curve" src="../../../../images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png" /></p> 1795e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * <p>Standard sRGB gamma mapping, per IEC 61966-2-1:1999, with 16 control points:</p> 1796e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * <pre><code>{@link CaptureRequest#TONEMAP_CURVE_RED android.tonemap.curveRed} = [ 1797e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * 0.0000, 0.0000, 0.0667, 0.2864, 0.1333, 0.4007, 0.2000, 0.4845, 1798e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * 0.2667, 0.5532, 0.3333, 0.6125, 0.4000, 0.6652, 0.4667, 0.7130, 1799e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * 0.5333, 0.7569, 0.6000, 0.7977, 0.6667, 0.8360, 0.7333, 0.8721, 1800e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * 0.8000, 0.9063, 0.8667, 0.9389, 0.9333, 0.9701, 1.0000, 1.0000 ] 1801e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * </code></pre> 1802e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * <p><img alt="sRGB tonemapping curve" src="../../../../images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png" /></p> 18030da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * 1804e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * @see CaptureRequest#TONEMAP_CURVE_RED 1805e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * @see CameraCharacteristics#TONEMAP_MAX_CURVE_POINTS 18060da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * @see CaptureRequest#TONEMAP_MODE 18075a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 18085a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<float[]> TONEMAP_CURVE_RED = 18095a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<float[]>("android.tonemap.curveRed", float[].class); 18105a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 18115a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1812e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * <p>High-level global contrast/gamma/tonemapping control.</p> 1813e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * <p>When switching to an application-defined contrast curve by setting 1814e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * {@link CaptureRequest#TONEMAP_MODE android.tonemap.mode} to CONTRAST_CURVE, the curve is defined 1815e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * per-channel with a set of <code>(in, out)</code> points that specify the 1816e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * mapping from input high-bit-depth pixel value to the output 1817e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * low-bit-depth value. Since the actual pixel ranges of both input 1818e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * and output may change depending on the camera pipeline, the values 1819e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * are specified by normalized floating-point numbers.</p> 1820e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * <p>More-complex color mapping operations such as 3D color look-up 1821e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * tables, selective chroma enhancement, or other non-linear color 1822e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * transforms will be disabled when {@link CaptureRequest#TONEMAP_MODE android.tonemap.mode} is 1823e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * CONTRAST_CURVE.</p> 1824e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * <p>When using either FAST or HIGH_QUALITY, the camera device will 1825e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * emit its own tonemap curve in {@link CaptureRequest#TONEMAP_CURVE_RED android.tonemap.curveRed}, 1826e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * {@link CaptureRequest#TONEMAP_CURVE_GREEN android.tonemap.curveGreen}, and {@link CaptureRequest#TONEMAP_CURVE_BLUE android.tonemap.curveBlue}. 1827e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * These values are always available, and as close as possible to the 1828e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * actually used nonlinear/nonglobal transforms.</p> 1829e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * <p>If a request is sent with TRANSFORM_MATRIX with the camera device's 1830e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * provided curve in FAST or HIGH_QUALITY, the image's tonemap will be 1831e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * roughly the same.</p> 18323242f4fb19b77bcd2435cbe710188d012d08b005Igor Murashkin * 1833e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * @see CaptureRequest#TONEMAP_CURVE_BLUE 1834e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * @see CaptureRequest#TONEMAP_CURVE_GREEN 1835e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * @see CaptureRequest#TONEMAP_CURVE_RED 1836e0060930cbff1af0486466e03605e6e8ee525302Igor Murashkin * @see CaptureRequest#TONEMAP_MODE 18375a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #TONEMAP_MODE_CONTRAST_CURVE 18385a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #TONEMAP_MODE_FAST 18395a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @see #TONEMAP_MODE_HIGH_QUALITY 18405a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 18415a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Integer> TONEMAP_MODE = 18425a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Integer>("android.tonemap.mode", int.class); 18435a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 18445a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1845ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>This LED is nominally used to indicate to the user 18465a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * that the camera is powered on and may be streaming images back to the 18475a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * Application Processor. In certain rare circumstances, the OS may 18485a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * disable this when video is processed locally and not transmitted to 1849ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * any untrusted applications.</p> 1850ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>In particular, the LED <em>must</em> always be on when the data could be 1851ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * transmitted off the device. The LED <em>should</em> always be on whenever 1852ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * data is stored locally on the device.</p> 1853ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>The LED <em>may</em> be off if a trusted application is using the data that 1854ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * doesn't violate the above rules.</p> 18555a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * @hide 18565a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 18575a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Boolean> LED_TRANSMIT = 18585a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Boolean>("android.led.transmit", boolean.class); 18595a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 18605a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /** 1861ace5bf04126f7dd49d75fca9218031f0db02e5ddIgor Murashkin * <p>Whether black-level compensation is locked 18620956af56a294397325f2695604229ab7550364caEino-Ville Talvala * to its current values, or is free to vary.</p> 18630956af56a294397325f2695604229ab7550364caEino-Ville Talvala * <p>Whether the black level offset was locked for this frame. Should be 18640da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * ON if {@link CaptureRequest#BLACK_LEVEL_LOCK android.blackLevel.lock} was ON in the capture request, unless 18650956af56a294397325f2695604229ab7550364caEino-Ville Talvala * a change in other capture settings forced the camera device to 18660956af56a294397325f2695604229ab7550364caEino-Ville Talvala * perform a black level reset.</p> 18670da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * 18680da8bf5dbc8912cf70df14bfa655189a04c75476Eino-Ville Talvala * @see CaptureRequest#BLACK_LEVEL_LOCK 18695a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala */ 18705a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala public static final Key<Boolean> BLACK_LEVEL_LOCK = 18715a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala new Key<Boolean>("android.blackLevel.lock", boolean.class); 18725a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala 18733865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin /** 18743865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * <p>The frame number corresponding to the last request 18753865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * with which the output result (metadata + buffers) has been fully 18763865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * synchronized.</p> 18773865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * <p>When a request is submitted to the camera device, there is usually a 18783865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * delay of several frames before the controls get applied. A camera 18793865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * device may either choose to account for this delay by implementing a 18803865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * pipeline and carefully submit well-timed atomic control updates, or 18813865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * it may start streaming control changes that span over several frame 18823865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * boundaries.</p> 18833865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * <p>In the latter case, whenever a request's settings change relative to 18843865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * the previous submitted request, the full set of changes may take 18853865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * multiple frame durations to fully take effect. Some settings may 18863865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * take effect sooner (in less frame durations) than others.</p> 18873865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * <p>While a set of control changes are being propagated, this value 18883865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * will be CONVERGING.</p> 18893865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * <p>Once it is fully known that a set of control changes have been 18903865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * finished propagating, and the resulting updated control settings 18913865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * have been read back by the camera device, this value will be set 18923865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * to a non-negative frame number (corresponding to the request to 18933865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * which the results have synchronized to).</p> 18943865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * <p>Older camera device implementations may not have a way to detect 18953865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * when all camera controls have been applied, and will always set this 18963865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * value to UNKNOWN.</p> 18973865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * <p>FULL capability devices will always have this value set to the 18983865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * frame number of the request corresponding to this result.</p> 18993865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * <p><em>Further details</em>:</p> 19003865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * <ul> 19013865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * <li>Whenever a request differs from the last request, any future 19023865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * results not yet returned may have this value set to CONVERGING (this 19033865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * could include any in-progress captures not yet returned by the camera 19043865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * device, for more details see pipeline considerations below).</li> 19053865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * <li>Submitting a series of multiple requests that differ from the 19063865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * previous request (e.g. r1, r2, r3 s.t. r1 != r2 != r3) 19073865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * moves the new synchronization frame to the last non-repeating 19083865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * request (using the smallest frame number from the contiguous list of 19093865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * repeating requests).</li> 19103865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * <li>Submitting the same request repeatedly will not change this value 19113865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * to CONVERGING, if it was already a non-negative value.</li> 19123865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * <li>When this value changes to non-negative, that means that all of the 19133865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * metadata controls from the request have been applied, all of the 19143865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * metadata controls from the camera device have been read to the 19153865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * updated values (into the result), and all of the graphics buffers 19163865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * corresponding to this result are also synchronized to the request.</li> 19173865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * </ul> 19183865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * <p><em>Pipeline considerations</em>:</p> 19193865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * <p>Submitting a request with updated controls relative to the previously 19203865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * submitted requests may also invalidate the synchronization state 19213865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * of all the results corresponding to currently in-flight requests.</p> 19223865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * <p>In other words, results for this current request and up to 19233865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * {@link CameraCharacteristics#REQUEST_PIPELINE_MAX_DEPTH android.request.pipelineMaxDepth} prior requests may have their 19243865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * android.sync.frameNumber change to CONVERGING.</p> 19253865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * 19263865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * @see CameraCharacteristics#REQUEST_PIPELINE_MAX_DEPTH 19273865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * @see #SYNC_FRAME_NUMBER_CONVERGING 19283865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * @see #SYNC_FRAME_NUMBER_UNKNOWN 19293865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin * @hide 19303865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin */ 19313865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin public static final Key<Integer> SYNC_FRAME_NUMBER = 19323865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin new Key<Integer>("android.sync.frameNumber", int.class); 19333865a84255a4e65a5d9790083a1e519b05f40d50Igor Murashkin 19345a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala /*~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~ 19355a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala * End generated code 19365a32b20ccc34fd7d4f048de05c427a7a96786531Eino-Ville Talvala *~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~O@*/ 1937b779ac1e2e3e463aa49442ac801dde410f22dc73Igor Murashkin 1938b779ac1e2e3e463aa49442ac801dde410f22dc73Igor Murashkin /** 1939b779ac1e2e3e463aa49442ac801dde410f22dc73Igor Murashkin * <p> 1940b779ac1e2e3e463aa49442ac801dde410f22dc73Igor Murashkin * List of the {@link Face Faces} detected through camera face detection 1941b779ac1e2e3e463aa49442ac801dde410f22dc73Igor Murashkin * in this result. 1942b779ac1e2e3e463aa49442ac801dde410f22dc73Igor Murashkin * </p> 1943b779ac1e2e3e463aa49442ac801dde410f22dc73Igor Murashkin * <p> 1944b779ac1e2e3e463aa49442ac801dde410f22dc73Igor Murashkin * Only available if {@link #STATISTICS_FACE_DETECT_MODE} {@code !=} 1945b779ac1e2e3e463aa49442ac801dde410f22dc73Igor Murashkin * {@link CameraMetadata#STATISTICS_FACE_DETECT_MODE_OFF OFF}. 1946b779ac1e2e3e463aa49442ac801dde410f22dc73Igor Murashkin * </p> 1947b779ac1e2e3e463aa49442ac801dde410f22dc73Igor Murashkin * 1948b779ac1e2e3e463aa49442ac801dde410f22dc73Igor Murashkin * @see Face 1949b779ac1e2e3e463aa49442ac801dde410f22dc73Igor Murashkin */ 1950b779ac1e2e3e463aa49442ac801dde410f22dc73Igor Murashkin public static final Key<Face[]> STATISTICS_FACES = 1951b779ac1e2e3e463aa49442ac801dde410f22dc73Igor Murashkin new Key<Face[]>("android.statistics.faces", Face[].class); 1952b2675542c2f414154125b534767ae0903fba581eEino-Ville Talvala} 1953