diff options
author | Yin-Chia Yeh <yinchiayeh@google.com> | 2015-02-06 11:23:25 -0800 |
---|---|---|
committer | Yin-Chia Yeh <yinchiayeh@google.com> | 2015-02-06 12:53:31 -0800 |
commit | 956c52b5a09fa6b193b162bdb3aee629323cde2b (patch) | |
tree | 1ed7c2639afaf749d4aa3f41a8a54361f650453c | |
parent | 6531290d5428370cd504b2cc29073afbe848b41f (diff) | |
download | frameworks_base-956c52b5a09fa6b193b162bdb3aee629323cde2b.zip frameworks_base-956c52b5a09fa6b193b162bdb3aee629323cde2b.tar.gz frameworks_base-956c52b5a09fa6b193b162bdb3aee629323cde2b.tar.bz2 |
Camera2: doc update for HAL3.3 tonemapping change
Codegen doc change.
Change-Id: Idd5185767c177f3179e5833be3f42357a5ead25f
-rw-r--r-- | api/current.txt | 8 | ||||
-rw-r--r-- | api/system-current.txt | 8 | ||||
-rw-r--r-- | core/java/android/hardware/camera2/CameraCharacteristics.java | 9 | ||||
-rw-r--r-- | core/java/android/hardware/camera2/CameraMetadata.java | 53 | ||||
-rw-r--r-- | core/java/android/hardware/camera2/CaptureRequest.java | 50 | ||||
-rw-r--r-- | core/java/android/hardware/camera2/CaptureResult.java | 50 | ||||
-rw-r--r-- | docs/html/images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png | bin | 33765 -> 31494 bytes | |||
-rw-r--r-- | docs/html/images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png | bin | 24914 -> 22690 bytes | |||
-rw-r--r-- | docs/html/images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png | bin | 23631 -> 21822 bytes | |||
-rw-r--r-- | docs/html/images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png | bin | 0 -> 32384 bytes | |||
-rw-r--r-- | docs/html/images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png | bin | 34913 -> 32315 bytes |
11 files changed, 174 insertions, 4 deletions
diff --git a/api/current.txt b/api/current.txt index 1abcdb1..3d54693 100644 --- a/api/current.txt +++ b/api/current.txt @@ -13048,7 +13048,11 @@ package android.hardware.camera2 { field public static final int SYNC_MAX_LATENCY_UNKNOWN = -1; // 0xffffffff field public static final int TONEMAP_MODE_CONTRAST_CURVE = 0; // 0x0 field public static final int TONEMAP_MODE_FAST = 1; // 0x1 + field public static final int TONEMAP_MODE_GAMMA_VALUE = 3; // 0x3 field public static final int TONEMAP_MODE_HIGH_QUALITY = 2; // 0x2 + field public static final int TONEMAP_MODE_PRESET_CURVE = 4; // 0x4 + field public static final int TONEMAP_PRESET_CURVE_REC709 = 1; // 0x1 + field public static final int TONEMAP_PRESET_CURVE_SRGB = 0; // 0x0 } public class CaptureFailure { @@ -13116,7 +13120,9 @@ package android.hardware.camera2 { field public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Boolean> STATISTICS_HOT_PIXEL_MAP_MODE; field public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> STATISTICS_LENS_SHADING_MAP_MODE; field public static final android.hardware.camera2.CaptureRequest.Key<android.hardware.camera2.params.TonemapCurve> TONEMAP_CURVE; + field public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Float> TONEMAP_GAMMA; field public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> TONEMAP_MODE; + field public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> TONEMAP_PRESET_CURVE; } public static final class CaptureRequest.Builder { @@ -13204,7 +13210,9 @@ package android.hardware.camera2 { field public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> STATISTICS_LENS_SHADING_MAP_MODE; field public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> STATISTICS_SCENE_FLICKER; field public static final android.hardware.camera2.CaptureResult.Key<android.hardware.camera2.params.TonemapCurve> TONEMAP_CURVE; + field public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> TONEMAP_GAMMA; field public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> TONEMAP_MODE; + field public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> TONEMAP_PRESET_CURVE; } public static final class CaptureResult.Key { diff --git a/api/system-current.txt b/api/system-current.txt index f74538f..0235bef 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -13318,7 +13318,11 @@ package android.hardware.camera2 { field public static final int SYNC_MAX_LATENCY_UNKNOWN = -1; // 0xffffffff field public static final int TONEMAP_MODE_CONTRAST_CURVE = 0; // 0x0 field public static final int TONEMAP_MODE_FAST = 1; // 0x1 + field public static final int TONEMAP_MODE_GAMMA_VALUE = 3; // 0x3 field public static final int TONEMAP_MODE_HIGH_QUALITY = 2; // 0x2 + field public static final int TONEMAP_MODE_PRESET_CURVE = 4; // 0x4 + field public static final int TONEMAP_PRESET_CURVE_REC709 = 1; // 0x1 + field public static final int TONEMAP_PRESET_CURVE_SRGB = 0; // 0x0 } public class CaptureFailure { @@ -13386,7 +13390,9 @@ package android.hardware.camera2 { field public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Boolean> STATISTICS_HOT_PIXEL_MAP_MODE; field public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> STATISTICS_LENS_SHADING_MAP_MODE; field public static final android.hardware.camera2.CaptureRequest.Key<android.hardware.camera2.params.TonemapCurve> TONEMAP_CURVE; + field public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Float> TONEMAP_GAMMA; field public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> TONEMAP_MODE; + field public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> TONEMAP_PRESET_CURVE; } public static final class CaptureRequest.Builder { @@ -13474,7 +13480,9 @@ package android.hardware.camera2 { field public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> STATISTICS_LENS_SHADING_MAP_MODE; field public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> STATISTICS_SCENE_FLICKER; field public static final android.hardware.camera2.CaptureResult.Key<android.hardware.camera2.params.TonemapCurve> TONEMAP_CURVE; + field public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> TONEMAP_GAMMA; field public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> TONEMAP_MODE; + field public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> TONEMAP_PRESET_CURVE; } public static final class CaptureResult.Key { diff --git a/core/java/android/hardware/camera2/CameraCharacteristics.java b/core/java/android/hardware/camera2/CameraCharacteristics.java index bb45b91..4c3a4a6 100644 --- a/core/java/android/hardware/camera2/CameraCharacteristics.java +++ b/core/java/android/hardware/camera2/CameraCharacteristics.java @@ -2299,8 +2299,13 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri /** * <p>List of tonemapping modes for {@link CaptureRequest#TONEMAP_MODE android.tonemap.mode} that are supported by this camera * device.</p> - * <p>Camera devices that support the MANUAL_POST_PROCESSING capability will always list - * CONTRAST_CURVE and FAST. This includes all FULL level devices.</p> + * <p>Camera devices that support the MANUAL_POST_PROCESSING capability will always contain + * at least one of below mode combinations:</p> + * <ul> + * <li>CONTRAST_CURVE and FAST</li> + * <li>GAMMA_VALUE, PRESET_CURVE, and FAST</li> + * </ul> + * <p>This includes all FULL level devices.</p> * <p><b>Range of valid values:</b><br> * Any value listed in {@link CaptureRequest#TONEMAP_MODE android.tonemap.mode}</p> * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> diff --git a/core/java/android/hardware/camera2/CameraMetadata.java b/core/java/android/hardware/camera2/CameraMetadata.java index af7d365..7d7f9b0 100644 --- a/core/java/android/hardware/camera2/CameraMetadata.java +++ b/core/java/android/hardware/camera2/CameraMetadata.java @@ -374,13 +374,19 @@ public abstract class CameraMetadata<TKey> { * The camera device supports basic manual control of the image post-processing * stages. This means the following controls are guaranteed to be supported:</p> * <ul> - * <li>Manual tonemap control<ul> + * <li> + * <p>Manual tonemap control</p> + * <ul> * <li>{@link CaptureRequest#TONEMAP_CURVE android.tonemap.curve}</li> * <li>{@link CaptureRequest#TONEMAP_MODE android.tonemap.mode}</li> * <li>{@link CameraCharacteristics#TONEMAP_MAX_CURVE_POINTS android.tonemap.maxCurvePoints}</li> + * <li>{@link CaptureRequest#TONEMAP_GAMMA android.tonemap.gamma}</li> + * <li>{@link CaptureRequest#TONEMAP_PRESET_CURVE android.tonemap.presetCurve}</li> * </ul> * </li> - * <li>Manual white balance control<ul> + * <li> + * <p>Manual white balance control</p> + * <ul> * <li>{@link CaptureRequest#COLOR_CORRECTION_TRANSFORM android.colorCorrection.transform}</li> * <li>{@link CaptureRequest#COLOR_CORRECTION_GAINS android.colorCorrection.gains}</li> * </ul> @@ -410,8 +416,10 @@ public abstract class CameraMetadata<TKey> { * @see CaptureRequest#SHADING_MODE * @see CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE * @see CaptureRequest#TONEMAP_CURVE + * @see CaptureRequest#TONEMAP_GAMMA * @see CameraCharacteristics#TONEMAP_MAX_CURVE_POINTS * @see CaptureRequest#TONEMAP_MODE + * @see CaptureRequest#TONEMAP_PRESET_CURVE * @see CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES */ public static final int REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING = 2; @@ -2096,6 +2104,47 @@ public abstract class CameraMetadata<TKey> { */ public static final int TONEMAP_MODE_HIGH_QUALITY = 2; + /** + * <p>Use the gamma value specified in {@link CaptureRequest#TONEMAP_GAMMA android.tonemap.gamma} to peform + * tonemapping.</p> + * <p>All color enhancement and tonemapping must be disabled, except + * for applying the tonemapping curve specified by {@link CaptureRequest#TONEMAP_GAMMA android.tonemap.gamma}.</p> + * <p>Must not slow down frame rate relative to raw sensor output.</p> + * + * @see CaptureRequest#TONEMAP_GAMMA + * @see CaptureRequest#TONEMAP_MODE + */ + public static final int TONEMAP_MODE_GAMMA_VALUE = 3; + + /** + * <p>Use the preset tonemapping curve specified in + * {@link CaptureRequest#TONEMAP_PRESET_CURVE android.tonemap.presetCurve} to peform tonemapping.</p> + * <p>All color enhancement and tonemapping must be disabled, except + * for applying the tonemapping curve specified by + * {@link CaptureRequest#TONEMAP_PRESET_CURVE android.tonemap.presetCurve}.</p> + * <p>Must not slow down frame rate relative to raw sensor output.</p> + * + * @see CaptureRequest#TONEMAP_PRESET_CURVE + * @see CaptureRequest#TONEMAP_MODE + */ + public static final int TONEMAP_MODE_PRESET_CURVE = 4; + + // + // Enumeration values for CaptureRequest#TONEMAP_PRESET_CURVE + // + + /** + * <p>Tonemapping curve is defined by sRGB</p> + * @see CaptureRequest#TONEMAP_PRESET_CURVE + */ + public static final int TONEMAP_PRESET_CURVE_SRGB = 0; + + /** + * <p>Tonemapping curve is defined by ITU-R BT.709</p> + * @see CaptureRequest#TONEMAP_PRESET_CURVE + */ + public static final int TONEMAP_PRESET_CURVE_REC709 = 1; + // // Enumeration values for CaptureResult#CONTROL_AE_STATE // diff --git a/core/java/android/hardware/camera2/CaptureRequest.java b/core/java/android/hardware/camera2/CaptureRequest.java index e1b14cc..f157605 100644 --- a/core/java/android/hardware/camera2/CaptureRequest.java +++ b/core/java/android/hardware/camera2/CaptureRequest.java @@ -2352,6 +2352,8 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * <li>{@link #TONEMAP_MODE_CONTRAST_CURVE CONTRAST_CURVE}</li> * <li>{@link #TONEMAP_MODE_FAST FAST}</li> * <li>{@link #TONEMAP_MODE_HIGH_QUALITY HIGH_QUALITY}</li> + * <li>{@link #TONEMAP_MODE_GAMMA_VALUE GAMMA_VALUE}</li> + * <li>{@link #TONEMAP_MODE_PRESET_CURVE PRESET_CURVE}</li> * </ul></p> * <p><b>Available values for this device:</b><br> * {@link CameraCharacteristics#TONEMAP_AVAILABLE_TONE_MAP_MODES android.tonemap.availableToneMapModes}</p> @@ -2367,12 +2369,60 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * @see #TONEMAP_MODE_CONTRAST_CURVE * @see #TONEMAP_MODE_FAST * @see #TONEMAP_MODE_HIGH_QUALITY + * @see #TONEMAP_MODE_GAMMA_VALUE + * @see #TONEMAP_MODE_PRESET_CURVE */ @PublicKey public static final Key<Integer> TONEMAP_MODE = new Key<Integer>("android.tonemap.mode", int.class); /** + * <p>Tonemapping curve to use when {@link CaptureRequest#TONEMAP_MODE android.tonemap.mode} is + * GAMMA_VALUE</p> + * <p>The tonemap curve will be defined the following formula: + * * OUT = pow(IN, 1.0 / gamma) + * where IN and OUT is the input pixel value scaled to range [0.0, 1.0], + * pow is the power function and gamma is the gamma value specified by this + * key.</p> + * <p>The same curve will be applied to all color channels. The camera device + * may clip the input gamma value to its supported range. The actual applied + * value will be returned in capture result.</p> + * <p>The valid range of gamma value varies on different devices, but values + * within [1.0, 5.0] are guaranteed not to be clipped.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * + * @see CaptureRequest#TONEMAP_MODE + */ + @PublicKey + public static final Key<Float> TONEMAP_GAMMA = + new Key<Float>("android.tonemap.gamma", float.class); + + /** + * <p>Tonemapping curve to use when {@link CaptureRequest#TONEMAP_MODE android.tonemap.mode} is + * PRESET_CURVE</p> + * <p>The tonemap curve will be defined by specified standard.</p> + * <p>sRGB (approximated by 16 control points):</p> + * <p><img alt="sRGB tonemapping curve" src="../../../../images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png" /></p> + * <p>Rec. 709 (approximated by 16 control points):</p> + * <p><img alt="Rec. 709 tonemapping curve" src="../../../../images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png" /></p> + * <p>Note that above figures show a 16 control points approximation of preset + * curves. Camera devices may apply a different approximation to the curve.</p> + * <p><b>Possible values:</b> + * <ul> + * <li>{@link #TONEMAP_PRESET_CURVE_SRGB SRGB}</li> + * <li>{@link #TONEMAP_PRESET_CURVE_REC709 REC709}</li> + * </ul></p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * + * @see CaptureRequest#TONEMAP_MODE + * @see #TONEMAP_PRESET_CURVE_SRGB + * @see #TONEMAP_PRESET_CURVE_REC709 + */ + @PublicKey + public static final Key<Integer> TONEMAP_PRESET_CURVE = + new Key<Integer>("android.tonemap.presetCurve", int.class); + + /** * <p>This LED is nominally used to indicate to the user * that the camera is powered on and may be streaming images back to the * Application Processor. In certain rare circumstances, the OS may diff --git a/core/java/android/hardware/camera2/CaptureResult.java b/core/java/android/hardware/camera2/CaptureResult.java index 5bf5b29..0011735 100644 --- a/core/java/android/hardware/camera2/CaptureResult.java +++ b/core/java/android/hardware/camera2/CaptureResult.java @@ -3543,6 +3543,8 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <li>{@link #TONEMAP_MODE_CONTRAST_CURVE CONTRAST_CURVE}</li> * <li>{@link #TONEMAP_MODE_FAST FAST}</li> * <li>{@link #TONEMAP_MODE_HIGH_QUALITY HIGH_QUALITY}</li> + * <li>{@link #TONEMAP_MODE_GAMMA_VALUE GAMMA_VALUE}</li> + * <li>{@link #TONEMAP_MODE_PRESET_CURVE PRESET_CURVE}</li> * </ul></p> * <p><b>Available values for this device:</b><br> * {@link CameraCharacteristics#TONEMAP_AVAILABLE_TONE_MAP_MODES android.tonemap.availableToneMapModes}</p> @@ -3558,12 +3560,60 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * @see #TONEMAP_MODE_CONTRAST_CURVE * @see #TONEMAP_MODE_FAST * @see #TONEMAP_MODE_HIGH_QUALITY + * @see #TONEMAP_MODE_GAMMA_VALUE + * @see #TONEMAP_MODE_PRESET_CURVE */ @PublicKey public static final Key<Integer> TONEMAP_MODE = new Key<Integer>("android.tonemap.mode", int.class); /** + * <p>Tonemapping curve to use when {@link CaptureRequest#TONEMAP_MODE android.tonemap.mode} is + * GAMMA_VALUE</p> + * <p>The tonemap curve will be defined the following formula: + * * OUT = pow(IN, 1.0 / gamma) + * where IN and OUT is the input pixel value scaled to range [0.0, 1.0], + * pow is the power function and gamma is the gamma value specified by this + * key.</p> + * <p>The same curve will be applied to all color channels. The camera device + * may clip the input gamma value to its supported range. The actual applied + * value will be returned in capture result.</p> + * <p>The valid range of gamma value varies on different devices, but values + * within [1.0, 5.0] are guaranteed not to be clipped.</p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * + * @see CaptureRequest#TONEMAP_MODE + */ + @PublicKey + public static final Key<Float> TONEMAP_GAMMA = + new Key<Float>("android.tonemap.gamma", float.class); + + /** + * <p>Tonemapping curve to use when {@link CaptureRequest#TONEMAP_MODE android.tonemap.mode} is + * PRESET_CURVE</p> + * <p>The tonemap curve will be defined by specified standard.</p> + * <p>sRGB (approximated by 16 control points):</p> + * <p><img alt="sRGB tonemapping curve" src="../../../../images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png" /></p> + * <p>Rec. 709 (approximated by 16 control points):</p> + * <p><img alt="Rec. 709 tonemapping curve" src="../../../../images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png" /></p> + * <p>Note that above figures show a 16 control points approximation of preset + * curves. Camera devices may apply a different approximation to the curve.</p> + * <p><b>Possible values:</b> + * <ul> + * <li>{@link #TONEMAP_PRESET_CURVE_SRGB SRGB}</li> + * <li>{@link #TONEMAP_PRESET_CURVE_REC709 REC709}</li> + * </ul></p> + * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> + * + * @see CaptureRequest#TONEMAP_MODE + * @see #TONEMAP_PRESET_CURVE_SRGB + * @see #TONEMAP_PRESET_CURVE_REC709 + */ + @PublicKey + public static final Key<Integer> TONEMAP_PRESET_CURVE = + new Key<Integer>("android.tonemap.presetCurve", int.class); + + /** * <p>This LED is nominally used to indicate to the user * that the camera is powered on and may be streaming images back to the * Application Processor. In certain rare circumstances, the OS may diff --git a/docs/html/images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png b/docs/html/images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png Binary files differindex ec89e37..a02fd89 100644 --- a/docs/html/images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png +++ b/docs/html/images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png diff --git a/docs/html/images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png b/docs/html/images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png Binary files differindex cf0c63d..c309ac5 100644 --- a/docs/html/images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png +++ b/docs/html/images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png diff --git a/docs/html/images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png b/docs/html/images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png Binary files differindex f226a54..414fad4 100644 --- a/docs/html/images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png +++ b/docs/html/images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png diff --git a/docs/html/images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png b/docs/html/images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png Binary files differnew file mode 100644 index 0000000..c147a87 --- /dev/null +++ b/docs/html/images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png diff --git a/docs/html/images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png b/docs/html/images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png Binary files differindex ded0645..4ce2125 100644 --- a/docs/html/images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png +++ b/docs/html/images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png |