blob: 1d6ff7db869bf2541041d84e22ae3edbeffa7516 [file] [log] [blame]
Eino-Ville Talvalab2675542012-12-12 13:29:45 -08001/*
2 * Copyright (C) 2013 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
Eino-Ville Talvala2f1a2e42013-07-25 17:12:05 -070017package android.hardware.camera2;
Eino-Ville Talvalab2675542012-12-12 13:29:45 -080018
Eino-Ville Talvala70c22072013-08-27 12:09:04 -070019import android.hardware.camera2.impl.CameraMetadataNative;
Eino-Ville Talvalab2675542012-12-12 13:29:45 -080020
Igor Murashkin7a36a0f2013-09-10 18:13:09 -070021import java.lang.reflect.Field;
Igor Murashkin03fdb142013-09-30 12:14:58 -070022import java.lang.reflect.Modifier;
Igor Murashkin7a36a0f2013-09-10 18:13:09 -070023import java.util.ArrayList;
24import java.util.Collections;
25import java.util.List;
26
Eino-Ville Talvalab2675542012-12-12 13:29:45 -080027/**
28 * The base class for camera controls and information.
29 *
Igor Murashkin7a36a0f2013-09-10 18:13:09 -070030 * <p>
Eino-Ville Talvalab2675542012-12-12 13:29:45 -080031 * This class defines the basic key/value map used for querying for camera
32 * characteristics or capture results, and for setting camera request
33 * parameters.
Igor Murashkin7a36a0f2013-09-10 18:13:09 -070034 * </p>
35 *
36 * <p>
37 * All instances of CameraMetadata are immutable. The list of keys with {@link #getKeys()}
38 * never changes, nor do the values returned by any key with {@link #get} throughout
39 * the lifetime of the object.
40 * </p>
Eino-Ville Talvalab2675542012-12-12 13:29:45 -080041 *
42 * @see CameraDevice
43 * @see CameraManager
Igor Murashkin68f40062013-09-10 12:15:54 -070044 * @see CameraCharacteristics
Eino-Ville Talvalab2675542012-12-12 13:29:45 -080045 **/
Eino-Ville Talvala70c22072013-08-27 12:09:04 -070046public abstract class CameraMetadata {
Igor Murashkin70725502013-06-25 20:27:06 +000047
Eino-Ville Talvalab2675542012-12-12 13:29:45 -080048 /**
Igor Murashkin68f40062013-09-10 12:15:54 -070049 * Set a camera metadata field to a value. The field definitions can be
50 * found in {@link CameraCharacteristics}, {@link CaptureResult}, and
51 * {@link CaptureRequest}.
52 *
53 * @param key The metadata field to write.
54 * @param value The value to set the field to, which must be of a matching
55 * type to the key.
56 *
Eino-Ville Talvala70c22072013-08-27 12:09:04 -070057 * @hide
Eino-Ville Talvalab2675542012-12-12 13:29:45 -080058 */
Eino-Ville Talvala70c22072013-08-27 12:09:04 -070059 protected CameraMetadata() {
Eino-Ville Talvalab2675542012-12-12 13:29:45 -080060 }
61
62 /**
Igor Murashkin7a36a0f2013-09-10 18:13:09 -070063 * Get a camera metadata field value.
64 *
65 * <p>The field definitions can be
Igor Murashkin68f40062013-09-10 12:15:54 -070066 * found in {@link CameraCharacteristics}, {@link CaptureResult}, and
Igor Murashkin7a36a0f2013-09-10 18:13:09 -070067 * {@link CaptureRequest}.</p>
68 *
69 * <p>Querying the value for the same key more than once will return a value
70 * which is equal to the previous queried value.</p>
Eino-Ville Talvalab2675542012-12-12 13:29:45 -080071 *
Igor Murashkinb519cc52013-07-02 11:23:44 -070072 * @throws IllegalArgumentException if the key was not valid
73 *
Benjamin Hendricks24eb8a32013-08-15 12:46:22 -070074 * @param key The metadata field to read.
75 * @return The value of that key, or {@code null} if the field is not set.
Eino-Ville Talvalab2675542012-12-12 13:29:45 -080076 */
Eino-Ville Talvala70c22072013-08-27 12:09:04 -070077 public abstract <T> T get(Key<T> key);
Eino-Ville Talvalab2675542012-12-12 13:29:45 -080078
Igor Murashkin7a36a0f2013-09-10 18:13:09 -070079 /**
80 * Returns a list of the keys contained in this map.
81 *
82 * <p>The list returned is not modifiable, so any attempts to modify it will throw
83 * a {@code UnsupportedOperationException}.</p>
84 *
85 * <p>All values retrieved by a key from this list with {@link #get} are guaranteed to be
86 * non-{@code null}. Each key is only listed once in the list. The order of the keys
87 * is undefined.</p>
88 *
89 * @return List of the keys contained in this map.
90 */
91 public List<Key<?>> getKeys() {
92 return Collections.unmodifiableList(getKeysStatic(this.getClass(), this));
93 }
94
95 /**
96 * Return a list of all the Key<?> that are declared as a field inside of the class
97 * {@code type}.
98 *
99 * <p>
100 * Optionally, if {@code instance} is not null, then filter out any keys with null values.
101 * </p>
102 */
103 /*package*/ static ArrayList<Key<?>> getKeysStatic(Class<? extends CameraMetadata> type,
104 CameraMetadata instance) {
105 ArrayList<Key<?>> keyList = new ArrayList<Key<?>>();
106
107 Field[] fields = type.getDeclaredFields();
108 for (Field field : fields) {
Igor Murashkin03fdb142013-09-30 12:14:58 -0700109 // Filter for Keys that are public
110 if (field.getType().isAssignableFrom(Key.class) &&
111 (field.getModifiers() & Modifier.PUBLIC) != 0) {
Igor Murashkin7a36a0f2013-09-10 18:13:09 -0700112 Key<?> key;
113 try {
114 key = (Key<?>) field.get(instance);
115 } catch (IllegalAccessException e) {
116 throw new AssertionError("Can't get IllegalAccessException", e);
117 } catch (IllegalArgumentException e) {
118 throw new AssertionError("Can't get IllegalArgumentException", e);
119 }
120 if (instance == null || instance.get(key) != null) {
121 keyList.add(key);
122 }
123 }
124 }
125
126 return keyList;
127 }
128
Eino-Ville Talvalab2675542012-12-12 13:29:45 -0800129 public static class Key<T> {
Igor Murashkinb519cc52013-07-02 11:23:44 -0700130
131 private boolean mHasTag;
132 private int mTag;
133 private final Class<T> mType;
Eino-Ville Talvala70c22072013-08-27 12:09:04 -0700134 private final String mName;
Igor Murashkinb519cc52013-07-02 11:23:44 -0700135
Eino-Ville Talvala70c22072013-08-27 12:09:04 -0700136 /**
Igor Murashkinb519cc52013-07-02 11:23:44 -0700137 * @hide
138 */
139 public Key(String name, Class<T> type) {
Eino-Ville Talvalab2675542012-12-12 13:29:45 -0800140 if (name == null) {
141 throw new NullPointerException("Key needs a valid name");
Igor Murashkinb519cc52013-07-02 11:23:44 -0700142 } else if (type == null) {
143 throw new NullPointerException("Type needs to be non-null");
Eino-Ville Talvalab2675542012-12-12 13:29:45 -0800144 }
145 mName = name;
Igor Murashkinb519cc52013-07-02 11:23:44 -0700146 mType = type;
Eino-Ville Talvalab2675542012-12-12 13:29:45 -0800147 }
148
149 public final String getName() {
150 return mName;
151 }
152
153 @Override
154 public final int hashCode() {
155 return mName.hashCode();
156 }
157
158 @Override
159 @SuppressWarnings("unchecked")
160 public final boolean equals(Object o) {
161 if (this == o) {
162 return true;
163 }
164
165 if (!(o instanceof Key)) {
166 return false;
167 }
168
169 Key lhs = (Key) o;
170
171 return mName.equals(lhs.mName);
172 }
173
Igor Murashkinb519cc52013-07-02 11:23:44 -0700174 /**
175 * <p>
176 * Get the tag corresponding to this key. This enables insertion into the
177 * native metadata.
178 * </p>
179 *
180 * <p>This value is looked up the first time, and cached subsequently.</p>
181 *
Benjamin Hendricks24eb8a32013-08-15 12:46:22 -0700182 * @return The tag numeric value corresponding to the string
Igor Murashkinb519cc52013-07-02 11:23:44 -0700183 *
184 * @hide
185 */
186 public final int getTag() {
187 if (!mHasTag) {
Eino-Ville Talvala70c22072013-08-27 12:09:04 -0700188 mTag = CameraMetadataNative.getTag(mName);
Igor Murashkinb519cc52013-07-02 11:23:44 -0700189 mHasTag = true;
190 }
191 return mTag;
192 }
Eino-Ville Talvalab2675542012-12-12 13:29:45 -0800193
Eino-Ville Talvala70c22072013-08-27 12:09:04 -0700194 /**
195 * @hide
196 */
197 public final Class<T> getType() {
198 return mType;
Igor Murashkin70725502013-06-25 20:27:06 +0000199 }
200 }
201
Eino-Ville Talvala5a32b20c2013-08-08 12:38:36 -0700202 /*@O~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~
203 * The enum values below this point are generated from metadata
204 * definitions in /system/media/camera/docs. Do not modify by hand or
205 * modify the comment blocks at the start or end.
206 *~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~*/
207
208 //
Igor Murashkin68f40062013-09-10 12:15:54 -0700209 // Enumeration values for CameraCharacteristics#LENS_FACING
Eino-Ville Talvala5a32b20c2013-08-08 12:38:36 -0700210 //
211
212 /**
Igor Murashkin68f40062013-09-10 12:15:54 -0700213 * @see CameraCharacteristics#LENS_FACING
Eino-Ville Talvala5a32b20c2013-08-08 12:38:36 -0700214 */
215 public static final int LENS_FACING_FRONT = 0;
216
217 /**
Igor Murashkin68f40062013-09-10 12:15:54 -0700218 * @see CameraCharacteristics#LENS_FACING
Eino-Ville Talvala5a32b20c2013-08-08 12:38:36 -0700219 */
220 public static final int LENS_FACING_BACK = 1;
221
222 //
Igor Murashkin68f40062013-09-10 12:15:54 -0700223 // Enumeration values for CameraCharacteristics#LED_AVAILABLE_LEDS
Eino-Ville Talvala5a32b20c2013-08-08 12:38:36 -0700224 //
225
226 /**
227 * <p>
228 * android.led.transmit control is used
229 * </p>
Igor Murashkin68f40062013-09-10 12:15:54 -0700230 * @see CameraCharacteristics#LED_AVAILABLE_LEDS
Eino-Ville Talvala5a32b20c2013-08-08 12:38:36 -0700231 * @hide
232 */
233 public static final int LED_AVAILABLE_LEDS_TRANSMIT = 0;
234
235 //
Igor Murashkin68f40062013-09-10 12:15:54 -0700236 // Enumeration values for CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL
Eino-Ville Talvala5a32b20c2013-08-08 12:38:36 -0700237 //
238
239 /**
Igor Murashkin68f40062013-09-10 12:15:54 -0700240 * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL
Eino-Ville Talvala5a32b20c2013-08-08 12:38:36 -0700241 */
242 public static final int INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED = 0;
243
244 /**
Igor Murashkin68f40062013-09-10 12:15:54 -0700245 * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL
Eino-Ville Talvala5a32b20c2013-08-08 12:38:36 -0700246 */
247 public static final int INFO_SUPPORTED_HARDWARE_LEVEL_FULL = 1;
248
249 //
250 // Enumeration values for CaptureRequest#COLOR_CORRECTION_MODE
251 //
252
253 /**
254 * <p>
255 * Use the android.colorCorrection.transform matrix
256 * and android.colorCorrection.gains to do color conversion
257 * </p>
258 * @see CaptureRequest#COLOR_CORRECTION_MODE
259 */
260 public static final int COLOR_CORRECTION_MODE_TRANSFORM_MATRIX = 0;
261
262 /**
263 * <p>
264 * Must not slow down frame rate relative to raw
265 * bayer output
266 * </p>
267 * @see CaptureRequest#COLOR_CORRECTION_MODE
268 */
269 public static final int COLOR_CORRECTION_MODE_FAST = 1;
270
271 /**
272 * <p>
273 * Frame rate may be reduced by high
274 * quality
275 * </p>
276 * @see CaptureRequest#COLOR_CORRECTION_MODE
277 */
278 public static final int COLOR_CORRECTION_MODE_HIGH_QUALITY = 2;
279
280 //
281 // Enumeration values for CaptureRequest#CONTROL_AE_ANTIBANDING_MODE
282 //
283
284 /**
285 * @see CaptureRequest#CONTROL_AE_ANTIBANDING_MODE
286 */
287 public static final int CONTROL_AE_ANTIBANDING_MODE_OFF = 0;
288
289 /**
290 * @see CaptureRequest#CONTROL_AE_ANTIBANDING_MODE
291 */
292 public static final int CONTROL_AE_ANTIBANDING_MODE_50HZ = 1;
293
294 /**
295 * @see CaptureRequest#CONTROL_AE_ANTIBANDING_MODE
296 */
297 public static final int CONTROL_AE_ANTIBANDING_MODE_60HZ = 2;
298
299 /**
300 * @see CaptureRequest#CONTROL_AE_ANTIBANDING_MODE
301 */
302 public static final int CONTROL_AE_ANTIBANDING_MODE_AUTO = 3;
303
304 //
305 // Enumeration values for CaptureRequest#CONTROL_AE_MODE
306 //
307
308 /**
309 * <p>
310 * Autoexposure is disabled; sensor.exposureTime,
311 * sensor.sensitivity and sensor.frameDuration are used
312 * </p>
313 * @see CaptureRequest#CONTROL_AE_MODE
314 */
315 public static final int CONTROL_AE_MODE_OFF = 0;
316
317 /**
318 * <p>
319 * Autoexposure is active, no flash
320 * control
321 * </p>
322 * @see CaptureRequest#CONTROL_AE_MODE
323 */
324 public static final int CONTROL_AE_MODE_ON = 1;
325
326 /**
327 * <p>
328 * if flash exists Autoexposure is active, auto
329 * flash control; flash may be fired when precapture
330 * trigger is activated, and for captures for which
331 * captureIntent = STILL_CAPTURE
332 * </p>
333 * @see CaptureRequest#CONTROL_AE_MODE
334 */
335 public static final int CONTROL_AE_MODE_ON_AUTO_FLASH = 2;
336
337 /**
338 * <p>
339 * if flash exists Autoexposure is active, auto
340 * flash control for precapture trigger and always flash
341 * when captureIntent = STILL_CAPTURE
342 * </p>
343 * @see CaptureRequest#CONTROL_AE_MODE
344 */
345 public static final int CONTROL_AE_MODE_ON_ALWAYS_FLASH = 3;
346
347 /**
348 * <p>
349 * optional Automatic red eye reduction with flash.
350 * If deemed necessary, red eye reduction sequence should
351 * fire when precapture trigger is activated, and final
352 * flash should fire when captureIntent =
353 * STILL_CAPTURE
354 * </p>
355 * @see CaptureRequest#CONTROL_AE_MODE
356 */
357 public static final int CONTROL_AE_MODE_ON_AUTO_FLASH_REDEYE = 4;
358
359 //
360 // Enumeration values for CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
361 //
362
363 /**
364 * <p>
365 * The trigger is idle.
366 * </p>
367 * @see CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
368 */
369 public static final int CONTROL_AE_PRECAPTURE_TRIGGER_IDLE = 0;
370
371 /**
372 * <p>
373 * The precapture metering sequence
374 * must be started. The exact effect of the precapture
375 * trigger depends on the current AE mode and
376 * state.
377 * </p>
378 * @see CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
379 */
380 public static final int CONTROL_AE_PRECAPTURE_TRIGGER_START = 1;
381
382 //
383 // Enumeration values for CaptureRequest#CONTROL_AF_MODE
384 //
385
386 /**
387 * <p>
388 * The 3A routines do not control the lens;
389 * android.lens.focusDistance is controlled by the
390 * application
391 * </p>
392 * @see CaptureRequest#CONTROL_AF_MODE
393 */
394 public static final int CONTROL_AF_MODE_OFF = 0;
395
396 /**
397 * <p>
398 * if lens is not fixed focus.
399 * </p><p>
400 * Use android.lens.minimumFocusDistance to determine if lens
401 * is fixed focus In this mode, the lens does not move unless
402 * the autofocus trigger action is called. When that trigger
403 * is activated, AF must transition to ACTIVE_SCAN, then to
404 * the outcome of the scan (FOCUSED or
405 * NOT_FOCUSED).
406 * </p><p>
407 * Triggering cancel AF resets the lens position to default,
408 * and sets the AF state to INACTIVE.
409 * </p>
410 * @see CaptureRequest#CONTROL_AF_MODE
411 */
412 public static final int CONTROL_AF_MODE_AUTO = 1;
413
414 /**
415 * <p>
416 * In this mode, the lens does not move unless the
417 * autofocus trigger action is called.
418 * </p><p>
419 * When that trigger is activated, AF must transition to
420 * ACTIVE_SCAN, then to the outcome of the scan (FOCUSED or
421 * NOT_FOCUSED). Triggering cancel AF resets the lens
422 * position to default, and sets the AF state to
423 * INACTIVE.
424 * </p>
425 * @see CaptureRequest#CONTROL_AF_MODE
426 */
427 public static final int CONTROL_AF_MODE_MACRO = 2;
428
429 /**
430 * <p>
431 * In this mode, the AF algorithm modifies the lens
432 * position continually to attempt to provide a
433 * constantly-in-focus image stream.
434 * </p><p>
435 * The focusing behavior should be suitable for good quality
436 * video recording; typically this means slower focus
437 * movement and no overshoots. When the AF trigger is not
438 * involved, the AF algorithm should start in INACTIVE state,
439 * and then transition into PASSIVE_SCAN and PASSIVE_FOCUSED
440 * states as appropriate. When the AF trigger is activated,
441 * the algorithm should immediately transition into
442 * AF_FOCUSED or AF_NOT_FOCUSED as appropriate, and lock the
443 * lens position until a cancel AF trigger is received.
444 * </p><p>
445 * Once cancel is received, the algorithm should transition
446 * back to INACTIVE and resume passive scan. Note that this
447 * behavior is not identical to CONTINUOUS_PICTURE, since an
448 * ongoing PASSIVE_SCAN must immediately be
449 * canceled.
450 * </p>
451 * @see CaptureRequest#CONTROL_AF_MODE
452 */
453 public static final int CONTROL_AF_MODE_CONTINUOUS_VIDEO = 3;
454
455 /**
456 * <p>
457 * In this mode, the AF algorithm modifies the lens
458 * position continually to attempt to provide a
459 * constantly-in-focus image stream.
460 * </p><p>
461 * The focusing behavior should be suitable for still image
462 * capture; typically this means focusing as fast as
463 * possible. When the AF trigger is not involved, the AF
464 * algorithm should start in INACTIVE state, and then
465 * transition into PASSIVE_SCAN and PASSIVE_FOCUSED states as
466 * appropriate as it attempts to maintain focus. When the AF
467 * trigger is activated, the algorithm should finish its
468 * PASSIVE_SCAN if active, and then transition into
469 * AF_FOCUSED or AF_NOT_FOCUSED as appropriate, and lock the
470 * lens position until a cancel AF trigger is received.
471 * </p><p>
472 * When the AF cancel trigger is activated, the algorithm
473 * should transition back to INACTIVE and then act as if it
474 * has just been started.
475 * </p>
476 * @see CaptureRequest#CONTROL_AF_MODE
477 */
478 public static final int CONTROL_AF_MODE_CONTINUOUS_PICTURE = 4;
479
480 /**
481 * <p>
482 * Extended depth of field (digital focus). AF
483 * trigger is ignored, AF state should always be
484 * INACTIVE.
485 * </p>
486 * @see CaptureRequest#CONTROL_AF_MODE
487 */
488 public static final int CONTROL_AF_MODE_EDOF = 5;
489
490 //
491 // Enumeration values for CaptureRequest#CONTROL_AF_TRIGGER
492 //
493
494 /**
495 * <p>
496 * The trigger is idle.
497 * </p>
498 * @see CaptureRequest#CONTROL_AF_TRIGGER
499 */
500 public static final int CONTROL_AF_TRIGGER_IDLE = 0;
501
502 /**
503 * <p>
504 * Autofocus must trigger now.
505 * </p>
506 * @see CaptureRequest#CONTROL_AF_TRIGGER
507 */
508 public static final int CONTROL_AF_TRIGGER_START = 1;
509
510 /**
511 * <p>
512 * Autofocus must return to initial
513 * state, and cancel any active trigger.
514 * </p>
515 * @see CaptureRequest#CONTROL_AF_TRIGGER
516 */
517 public static final int CONTROL_AF_TRIGGER_CANCEL = 2;
518
519 //
520 // Enumeration values for CaptureRequest#CONTROL_AWB_MODE
521 //
522
523 /**
524 * @see CaptureRequest#CONTROL_AWB_MODE
525 */
526 public static final int CONTROL_AWB_MODE_OFF = 0;
527
528 /**
529 * @see CaptureRequest#CONTROL_AWB_MODE
530 */
531 public static final int CONTROL_AWB_MODE_AUTO = 1;
532
533 /**
534 * @see CaptureRequest#CONTROL_AWB_MODE
535 */
536 public static final int CONTROL_AWB_MODE_INCANDESCENT = 2;
537
538 /**
539 * @see CaptureRequest#CONTROL_AWB_MODE
540 */
541 public static final int CONTROL_AWB_MODE_FLUORESCENT = 3;
542
543 /**
544 * @see CaptureRequest#CONTROL_AWB_MODE
545 */
546 public static final int CONTROL_AWB_MODE_WARM_FLUORESCENT = 4;
547
548 /**
549 * @see CaptureRequest#CONTROL_AWB_MODE
550 */
551 public static final int CONTROL_AWB_MODE_DAYLIGHT = 5;
552
553 /**
554 * @see CaptureRequest#CONTROL_AWB_MODE
555 */
556 public static final int CONTROL_AWB_MODE_CLOUDY_DAYLIGHT = 6;
557
558 /**
559 * @see CaptureRequest#CONTROL_AWB_MODE
560 */
561 public static final int CONTROL_AWB_MODE_TWILIGHT = 7;
562
563 /**
564 * @see CaptureRequest#CONTROL_AWB_MODE
565 */
566 public static final int CONTROL_AWB_MODE_SHADE = 8;
567
568 //
569 // Enumeration values for CaptureRequest#CONTROL_CAPTURE_INTENT
570 //
571
572 /**
573 * <p>
574 * This request doesn't fall into the other
575 * categories. Default to preview-like
576 * behavior.
577 * </p>
578 * @see CaptureRequest#CONTROL_CAPTURE_INTENT
579 */
580 public static final int CONTROL_CAPTURE_INTENT_CUSTOM = 0;
581
582 /**
583 * <p>
584 * This request is for a preview-like usecase. The
585 * precapture trigger may be used to start off a metering
586 * w/flash sequence
587 * </p>
588 * @see CaptureRequest#CONTROL_CAPTURE_INTENT
589 */
590 public static final int CONTROL_CAPTURE_INTENT_PREVIEW = 1;
591
592 /**
593 * <p>
594 * This request is for a still capture-type
595 * usecase.
596 * </p>
597 * @see CaptureRequest#CONTROL_CAPTURE_INTENT
598 */
599 public static final int CONTROL_CAPTURE_INTENT_STILL_CAPTURE = 2;
600
601 /**
602 * <p>
603 * This request is for a video recording
604 * usecase.
605 * </p>
606 * @see CaptureRequest#CONTROL_CAPTURE_INTENT
607 */
608 public static final int CONTROL_CAPTURE_INTENT_VIDEO_RECORD = 3;
609
610 /**
611 * <p>
612 * This request is for a video snapshot (still
613 * image while recording video) usecase
614 * </p>
615 * @see CaptureRequest#CONTROL_CAPTURE_INTENT
616 */
617 public static final int CONTROL_CAPTURE_INTENT_VIDEO_SNAPSHOT = 4;
618
619 /**
620 * <p>
621 * This request is for a ZSL usecase; the
622 * application will stream full-resolution images and
623 * reprocess one or several later for a final
624 * capture
625 * </p>
626 * @see CaptureRequest#CONTROL_CAPTURE_INTENT
627 */
628 public static final int CONTROL_CAPTURE_INTENT_ZERO_SHUTTER_LAG = 5;
629
630 //
631 // Enumeration values for CaptureRequest#CONTROL_EFFECT_MODE
632 //
633
634 /**
635 * @see CaptureRequest#CONTROL_EFFECT_MODE
636 */
637 public static final int CONTROL_EFFECT_MODE_OFF = 0;
638
639 /**
640 * @see CaptureRequest#CONTROL_EFFECT_MODE
641 */
642 public static final int CONTROL_EFFECT_MODE_MONO = 1;
643
644 /**
645 * @see CaptureRequest#CONTROL_EFFECT_MODE
646 */
647 public static final int CONTROL_EFFECT_MODE_NEGATIVE = 2;
648
649 /**
650 * @see CaptureRequest#CONTROL_EFFECT_MODE
651 */
652 public static final int CONTROL_EFFECT_MODE_SOLARIZE = 3;
653
654 /**
655 * @see CaptureRequest#CONTROL_EFFECT_MODE
656 */
657 public static final int CONTROL_EFFECT_MODE_SEPIA = 4;
658
659 /**
660 * @see CaptureRequest#CONTROL_EFFECT_MODE
661 */
662 public static final int CONTROL_EFFECT_MODE_POSTERIZE = 5;
663
664 /**
665 * @see CaptureRequest#CONTROL_EFFECT_MODE
666 */
667 public static final int CONTROL_EFFECT_MODE_WHITEBOARD = 6;
668
669 /**
670 * @see CaptureRequest#CONTROL_EFFECT_MODE
671 */
672 public static final int CONTROL_EFFECT_MODE_BLACKBOARD = 7;
673
674 /**
675 * @see CaptureRequest#CONTROL_EFFECT_MODE
676 */
677 public static final int CONTROL_EFFECT_MODE_AQUA = 8;
678
679 //
680 // Enumeration values for CaptureRequest#CONTROL_MODE
681 //
682
683 /**
684 * <p>
685 * Full application control of pipeline. All 3A
686 * routines are disabled, no other settings in
687 * android.control.* have any effect
688 * </p>
689 * @see CaptureRequest#CONTROL_MODE
690 */
691 public static final int CONTROL_MODE_OFF = 0;
692
693 /**
694 * <p>
695 * Use settings for each individual 3A routine.
696 * Manual control of capture parameters is disabled. All
697 * controls in android.control.* besides sceneMode take
698 * effect
699 * </p>
700 * @see CaptureRequest#CONTROL_MODE
701 */
702 public static final int CONTROL_MODE_AUTO = 1;
703
704 /**
705 * <p>
706 * Use specific scene mode. Enabling this disables
707 * control.aeMode, control.awbMode and control.afMode
708 * controls; the HAL must ignore those settings while
709 * USE_SCENE_MODE is active (except for FACE_PRIORITY
710 * scene mode). Other control entries are still active.
711 * This setting can only be used if availableSceneModes !=
712 * UNSUPPORTED
713 * </p>
714 * @see CaptureRequest#CONTROL_MODE
715 */
716 public static final int CONTROL_MODE_USE_SCENE_MODE = 2;
717
718 //
719 // Enumeration values for CaptureRequest#CONTROL_SCENE_MODE
720 //
721
722 /**
723 * @see CaptureRequest#CONTROL_SCENE_MODE
724 */
725 public static final int CONTROL_SCENE_MODE_UNSUPPORTED = 0;
726
727 /**
728 * <p>
729 * if face detection support exists Use face
730 * detection data to drive 3A routines. If face detection
731 * statistics are disabled, should still operate correctly
732 * (but not return face detection statistics to the
733 * framework).
734 * </p><p>
735 * Unlike the other scene modes, aeMode, awbMode, and afMode
736 * remain active when FACE_PRIORITY is set. This is due to
737 * compatibility concerns with the old camera
738 * API
739 * </p>
740 * @see CaptureRequest#CONTROL_SCENE_MODE
741 */
742 public static final int CONTROL_SCENE_MODE_FACE_PRIORITY = 1;
743
744 /**
745 * @see CaptureRequest#CONTROL_SCENE_MODE
746 */
747 public static final int CONTROL_SCENE_MODE_ACTION = 2;
748
749 /**
750 * @see CaptureRequest#CONTROL_SCENE_MODE
751 */
752 public static final int CONTROL_SCENE_MODE_PORTRAIT = 3;
753
754 /**
755 * @see CaptureRequest#CONTROL_SCENE_MODE
756 */
757 public static final int CONTROL_SCENE_MODE_LANDSCAPE = 4;
758
759 /**
760 * @see CaptureRequest#CONTROL_SCENE_MODE
761 */
762 public static final int CONTROL_SCENE_MODE_NIGHT = 5;
763
764 /**
765 * @see CaptureRequest#CONTROL_SCENE_MODE
766 */
767 public static final int CONTROL_SCENE_MODE_NIGHT_PORTRAIT = 6;
768
769 /**
770 * @see CaptureRequest#CONTROL_SCENE_MODE
771 */
772 public static final int CONTROL_SCENE_MODE_THEATRE = 7;
773
774 /**
775 * @see CaptureRequest#CONTROL_SCENE_MODE
776 */
777 public static final int CONTROL_SCENE_MODE_BEACH = 8;
778
779 /**
780 * @see CaptureRequest#CONTROL_SCENE_MODE
781 */
782 public static final int CONTROL_SCENE_MODE_SNOW = 9;
783
784 /**
785 * @see CaptureRequest#CONTROL_SCENE_MODE
786 */
787 public static final int CONTROL_SCENE_MODE_SUNSET = 10;
788
789 /**
790 * @see CaptureRequest#CONTROL_SCENE_MODE
791 */
792 public static final int CONTROL_SCENE_MODE_STEADYPHOTO = 11;
793
794 /**
795 * @see CaptureRequest#CONTROL_SCENE_MODE
796 */
797 public static final int CONTROL_SCENE_MODE_FIREWORKS = 12;
798
799 /**
800 * @see CaptureRequest#CONTROL_SCENE_MODE
801 */
802 public static final int CONTROL_SCENE_MODE_SPORTS = 13;
803
804 /**
805 * @see CaptureRequest#CONTROL_SCENE_MODE
806 */
807 public static final int CONTROL_SCENE_MODE_PARTY = 14;
808
809 /**
810 * @see CaptureRequest#CONTROL_SCENE_MODE
811 */
812 public static final int CONTROL_SCENE_MODE_CANDLELIGHT = 15;
813
814 /**
815 * @see CaptureRequest#CONTROL_SCENE_MODE
816 */
817 public static final int CONTROL_SCENE_MODE_BARCODE = 16;
818
819 //
820 // Enumeration values for CaptureRequest#EDGE_MODE
821 //
822
823 /**
824 * <p>
825 * No edge enhancement is applied
826 * </p>
827 * @see CaptureRequest#EDGE_MODE
828 */
829 public static final int EDGE_MODE_OFF = 0;
830
831 /**
832 * <p>
833 * Must not slow down frame rate relative to raw
834 * bayer output
835 * </p>
836 * @see CaptureRequest#EDGE_MODE
837 */
838 public static final int EDGE_MODE_FAST = 1;
839
840 /**
841 * <p>
842 * Frame rate may be reduced by high
843 * quality
844 * </p>
845 * @see CaptureRequest#EDGE_MODE
846 */
847 public static final int EDGE_MODE_HIGH_QUALITY = 2;
848
849 //
850 // Enumeration values for CaptureRequest#FLASH_MODE
851 //
852
853 /**
854 * <p>
855 * Do not fire the flash for this
856 * capture
857 * </p>
858 * @see CaptureRequest#FLASH_MODE
859 */
860 public static final int FLASH_MODE_OFF = 0;
861
862 /**
863 * <p>
864 * if android.flash.available is true Fire flash
865 * for this capture based on firingPower,
866 * firingTime.
867 * </p>
868 * @see CaptureRequest#FLASH_MODE
869 */
870 public static final int FLASH_MODE_SINGLE = 1;
871
872 /**
873 * <p>
874 * if android.flash.available is true Flash
875 * continuously on, power set by
876 * firingPower
877 * </p>
878 * @see CaptureRequest#FLASH_MODE
879 */
880 public static final int FLASH_MODE_TORCH = 2;
881
882 //
883 // Enumeration values for CaptureRequest#LENS_OPTICAL_STABILIZATION_MODE
884 //
885
886 /**
887 * @see CaptureRequest#LENS_OPTICAL_STABILIZATION_MODE
888 */
889 public static final int LENS_OPTICAL_STABILIZATION_MODE_OFF = 0;
890
891 /**
892 * @see CaptureRequest#LENS_OPTICAL_STABILIZATION_MODE
893 */
894 public static final int LENS_OPTICAL_STABILIZATION_MODE_ON = 1;
895
896 //
897 // Enumeration values for CaptureRequest#NOISE_REDUCTION_MODE
898 //
899
900 /**
901 * <p>
902 * No noise reduction is applied
903 * </p>
904 * @see CaptureRequest#NOISE_REDUCTION_MODE
905 */
906 public static final int NOISE_REDUCTION_MODE_OFF = 0;
907
908 /**
909 * <p>
910 * Must not slow down frame rate relative to raw
911 * bayer output
912 * </p>
913 * @see CaptureRequest#NOISE_REDUCTION_MODE
914 */
915 public static final int NOISE_REDUCTION_MODE_FAST = 1;
916
917 /**
918 * <p>
919 * May slow down frame rate to provide highest
920 * quality
921 * </p>
922 * @see CaptureRequest#NOISE_REDUCTION_MODE
923 */
924 public static final int NOISE_REDUCTION_MODE_HIGH_QUALITY = 2;
925
926 //
927 // Enumeration values for CaptureRequest#STATISTICS_FACE_DETECT_MODE
928 //
929
930 /**
931 * @see CaptureRequest#STATISTICS_FACE_DETECT_MODE
932 */
933 public static final int STATISTICS_FACE_DETECT_MODE_OFF = 0;
934
935 /**
936 * <p>
937 * Optional Return rectangle and confidence
938 * only
939 * </p>
940 * @see CaptureRequest#STATISTICS_FACE_DETECT_MODE
941 */
942 public static final int STATISTICS_FACE_DETECT_MODE_SIMPLE = 1;
943
944 /**
945 * <p>
946 * Optional Return all face
947 * metadata
948 * </p>
949 * @see CaptureRequest#STATISTICS_FACE_DETECT_MODE
950 */
951 public static final int STATISTICS_FACE_DETECT_MODE_FULL = 2;
952
953 //
Eino-Ville Talvalad96748b2013-09-12 11:11:27 -0700954 // Enumeration values for CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
955 //
956
957 /**
958 * @see CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
959 */
960 public static final int STATISTICS_LENS_SHADING_MAP_MODE_OFF = 0;
961
962 /**
963 * @see CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
964 */
965 public static final int STATISTICS_LENS_SHADING_MAP_MODE_ON = 1;
966
967 //
Eino-Ville Talvala5a32b20c2013-08-08 12:38:36 -0700968 // Enumeration values for CaptureRequest#TONEMAP_MODE
969 //
970
971 /**
972 * <p>
973 * Use the tone mapping curve specified in
974 * android.tonemap.curve
975 * </p>
976 * @see CaptureRequest#TONEMAP_MODE
977 */
978 public static final int TONEMAP_MODE_CONTRAST_CURVE = 0;
979
980 /**
981 * <p>
982 * Must not slow down frame rate relative to raw
983 * bayer output
984 * </p>
985 * @see CaptureRequest#TONEMAP_MODE
986 */
987 public static final int TONEMAP_MODE_FAST = 1;
988
989 /**
990 * <p>
991 * Frame rate may be reduced by high
992 * quality
993 * </p>
994 * @see CaptureRequest#TONEMAP_MODE
995 */
996 public static final int TONEMAP_MODE_HIGH_QUALITY = 2;
997
998 //
999 // Enumeration values for CaptureResult#CONTROL_AE_STATE
1000 //
1001
1002 /**
1003 * <p>
1004 * AE is off. When a camera device is opened, it starts in
1005 * this state.
1006 * </p>
1007 * @see CaptureResult#CONTROL_AE_STATE
1008 */
1009 public static final int CONTROL_AE_STATE_INACTIVE = 0;
1010
1011 /**
1012 * <p>
1013 * AE doesn't yet have a good set of control values
1014 * for the current scene
1015 * </p>
1016 * @see CaptureResult#CONTROL_AE_STATE
1017 */
1018 public static final int CONTROL_AE_STATE_SEARCHING = 1;
1019
1020 /**
1021 * <p>
1022 * AE has a good set of control values for the
1023 * current scene
1024 * </p>
1025 * @see CaptureResult#CONTROL_AE_STATE
1026 */
1027 public static final int CONTROL_AE_STATE_CONVERGED = 2;
1028
1029 /**
1030 * <p>
1031 * AE has been locked (aeMode =
1032 * LOCKED)
1033 * </p>
1034 * @see CaptureResult#CONTROL_AE_STATE
1035 */
1036 public static final int CONTROL_AE_STATE_LOCKED = 3;
1037
1038 /**
1039 * <p>
1040 * AE has a good set of control values, but flash
1041 * needs to be fired for good quality still
1042 * capture
1043 * </p>
1044 * @see CaptureResult#CONTROL_AE_STATE
1045 */
1046 public static final int CONTROL_AE_STATE_FLASH_REQUIRED = 4;
1047
1048 /**
1049 * <p>
1050 * AE has been asked to do a precapture sequence
1051 * (through the
1052 * trigger_action(CAMERA2_TRIGGER_PRECAPTURE_METERING)
1053 * call), and is currently executing it. Once PRECAPTURE
1054 * completes, AE will transition to CONVERGED or
1055 * FLASH_REQUIRED as appropriate
1056 * </p>
1057 * @see CaptureResult#CONTROL_AE_STATE
1058 */
1059 public static final int CONTROL_AE_STATE_PRECAPTURE = 5;
1060
1061 //
1062 // Enumeration values for CaptureResult#CONTROL_AF_STATE
1063 //
1064
1065 /**
1066 * <p>
1067 * AF off or has not yet tried to scan/been asked
1068 * to scan. When a camera device is opened, it starts in
1069 * this state.
1070 * </p>
1071 * @see CaptureResult#CONTROL_AF_STATE
1072 */
1073 public static final int CONTROL_AF_STATE_INACTIVE = 0;
1074
1075 /**
1076 * <p>
Eino-Ville Talvala9f880f72013-09-20 17:50:41 -07001077 * if CONTINUOUS_* modes are supported. AF is
Eino-Ville Talvala5a32b20c2013-08-08 12:38:36 -07001078 * currently doing an AF scan initiated by a continuous
1079 * autofocus mode
1080 * </p>
1081 * @see CaptureResult#CONTROL_AF_STATE
1082 */
1083 public static final int CONTROL_AF_STATE_PASSIVE_SCAN = 1;
1084
1085 /**
1086 * <p>
Eino-Ville Talvala9f880f72013-09-20 17:50:41 -07001087 * if CONTINUOUS_* modes are supported. AF currently
Eino-Ville Talvala5a32b20c2013-08-08 12:38:36 -07001088 * believes it is in focus, but may restart scanning at
1089 * any time.
1090 * </p>
1091 * @see CaptureResult#CONTROL_AF_STATE
1092 */
1093 public static final int CONTROL_AF_STATE_PASSIVE_FOCUSED = 2;
1094
1095 /**
1096 * <p>
Eino-Ville Talvala9f880f72013-09-20 17:50:41 -07001097 * if AUTO or MACRO modes are supported. AF is doing
Eino-Ville Talvala5a32b20c2013-08-08 12:38:36 -07001098 * an AF scan because it was triggered by AF
1099 * trigger
1100 * </p>
1101 * @see CaptureResult#CONTROL_AF_STATE
1102 */
1103 public static final int CONTROL_AF_STATE_ACTIVE_SCAN = 3;
1104
1105 /**
1106 * <p>
Eino-Ville Talvala9f880f72013-09-20 17:50:41 -07001107 * if any AF mode besides OFF is supported. AF
Eino-Ville Talvala5a32b20c2013-08-08 12:38:36 -07001108 * believes it is focused correctly and is
1109 * locked
1110 * </p>
1111 * @see CaptureResult#CONTROL_AF_STATE
1112 */
1113 public static final int CONTROL_AF_STATE_FOCUSED_LOCKED = 4;
1114
1115 /**
1116 * <p>
Eino-Ville Talvala9f880f72013-09-20 17:50:41 -07001117 * if any AF mode besides OFF is supported. AF has
Eino-Ville Talvala5a32b20c2013-08-08 12:38:36 -07001118 * failed to focus successfully and is
1119 * locked
1120 * </p>
1121 * @see CaptureResult#CONTROL_AF_STATE
1122 */
1123 public static final int CONTROL_AF_STATE_NOT_FOCUSED_LOCKED = 5;
1124
Eino-Ville Talvala9f880f72013-09-20 17:50:41 -07001125 /**
1126 * <p>
1127 * if CONTINUOUS_* modes are supported. AF finished a
1128 * passive scan without finding focus, and may restart
1129 * scanning at any time.
1130 * </p>
1131 * @see CaptureResult#CONTROL_AF_STATE
1132 */
1133 public static final int CONTROL_AF_STATE_PASSIVE_UNFOCUSED = 6;
1134
Eino-Ville Talvala5a32b20c2013-08-08 12:38:36 -07001135 //
1136 // Enumeration values for CaptureResult#CONTROL_AWB_STATE
1137 //
1138
1139 /**
1140 * <p>
1141 * AWB is not in auto mode. When a camera device is opened, it
1142 * starts in this state.
1143 * </p>
1144 * @see CaptureResult#CONTROL_AWB_STATE
1145 */
1146 public static final int CONTROL_AWB_STATE_INACTIVE = 0;
1147
1148 /**
1149 * <p>
1150 * AWB doesn't yet have a good set of control
1151 * values for the current scene
1152 * </p>
1153 * @see CaptureResult#CONTROL_AWB_STATE
1154 */
1155 public static final int CONTROL_AWB_STATE_SEARCHING = 1;
1156
1157 /**
1158 * <p>
1159 * AWB has a good set of control values for the
1160 * current scene
1161 * </p>
1162 * @see CaptureResult#CONTROL_AWB_STATE
1163 */
1164 public static final int CONTROL_AWB_STATE_CONVERGED = 2;
1165
1166 /**
1167 * <p>
1168 * AE has been locked (aeMode =
1169 * LOCKED)
1170 * </p>
1171 * @see CaptureResult#CONTROL_AWB_STATE
1172 */
1173 public static final int CONTROL_AWB_STATE_LOCKED = 3;
1174
1175 //
1176 // Enumeration values for CaptureResult#FLASH_STATE
1177 //
1178
1179 /**
1180 * <p>
1181 * No flash on camera
1182 * </p>
1183 * @see CaptureResult#FLASH_STATE
1184 */
1185 public static final int FLASH_STATE_UNAVAILABLE = 0;
1186
1187 /**
1188 * <p>
1189 * if android.flash.available is true Flash is
1190 * charging and cannot be fired
1191 * </p>
1192 * @see CaptureResult#FLASH_STATE
1193 */
1194 public static final int FLASH_STATE_CHARGING = 1;
1195
1196 /**
1197 * <p>
1198 * if android.flash.available is true Flash is
1199 * ready to fire
1200 * </p>
1201 * @see CaptureResult#FLASH_STATE
1202 */
1203 public static final int FLASH_STATE_READY = 2;
1204
1205 /**
1206 * <p>
1207 * if android.flash.available is true Flash fired
1208 * for this capture
1209 * </p>
1210 * @see CaptureResult#FLASH_STATE
1211 */
1212 public static final int FLASH_STATE_FIRED = 3;
1213
1214 //
1215 // Enumeration values for CaptureResult#LENS_STATE
1216 //
1217
1218 /**
1219 * @see CaptureResult#LENS_STATE
1220 */
1221 public static final int LENS_STATE_STATIONARY = 0;
1222
Igor Murashkin9ea4ae62013-09-11 21:40:11 -07001223 /**
1224 * @see CaptureResult#LENS_STATE
1225 */
1226 public static final int LENS_STATE_MOVING = 1;
1227
Eino-Ville Talvala5a32b20c2013-08-08 12:38:36 -07001228 //
1229 // Enumeration values for CaptureResult#STATISTICS_SCENE_FLICKER
1230 //
1231
1232 /**
1233 * @see CaptureResult#STATISTICS_SCENE_FLICKER
1234 */
1235 public static final int STATISTICS_SCENE_FLICKER_NONE = 0;
1236
1237 /**
1238 * @see CaptureResult#STATISTICS_SCENE_FLICKER
1239 */
1240 public static final int STATISTICS_SCENE_FLICKER_50HZ = 1;
1241
1242 /**
1243 * @see CaptureResult#STATISTICS_SCENE_FLICKER
1244 */
1245 public static final int STATISTICS_SCENE_FLICKER_60HZ = 2;
1246
1247 /*~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~
1248 * End generated code
1249 *~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~O@*/
1250
Igor Murashkinb519cc52013-07-02 11:23:44 -07001251}