Loading api/current.txt +3 −0 Original line number Diff line number Diff line Loading @@ -11229,6 +11229,7 @@ package android.hardware.camera2 { field public static final android.hardware.camera2.CameraMetadata.Key SENSOR_ORIENTATION; field public static final android.hardware.camera2.CameraMetadata.Key STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES; field public static final android.hardware.camera2.CameraMetadata.Key STATISTICS_INFO_MAX_FACE_COUNT; field public static final android.hardware.camera2.CameraMetadata.Key SYNC_MAX_LATENCY; field public static final android.hardware.camera2.CameraMetadata.Key TONEMAP_MAX_CURVE_POINTS; } Loading Loading @@ -11410,6 +11411,8 @@ package android.hardware.camera2 { field public static final int STATISTICS_SCENE_FLICKER_50HZ = 1; // 0x1 field public static final int STATISTICS_SCENE_FLICKER_60HZ = 2; // 0x2 field public static final int STATISTICS_SCENE_FLICKER_NONE = 0; // 0x0 field public static final int SYNC_MAX_LATENCY_PER_FRAME_CONTROL = 0; // 0x0 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_HIGH_QUALITY = 2; // 0x2 core/java/android/hardware/camera2/CameraCharacteristics.java +38 −0 Original line number Diff line number Diff line Loading @@ -646,6 +646,44 @@ public final class CameraCharacteristics extends CameraMetadata { public static final Key<Integer> INFO_SUPPORTED_HARDWARE_LEVEL = new Key<Integer>("android.info.supportedHardwareLevel", int.class); /** * <p>The maximum number of frames that can occur after a request * (different than the previous) has been submitted, and before the * result's state becomes synchronized (by setting * android.sync.frameNumber to a non-negative value).</p> * <p>This defines the maximum distance (in number of metadata results), * between android.sync.frameNumber and the equivalent * android.request.frameCount.</p> * <p>In other words this acts as an upper boundary for how many frames * must occur before the camera device knows for a fact that the new * submitted camera settings have been applied in outgoing frames.</p> * <p>For example if the distance was 2,</p> * <pre><code>initial request = X (repeating) * request1 = X * request2 = Y * request3 = Y * request4 = Y * * where requestN has frameNumber N, and the first of the repeating * initial request's has frameNumber F (and F < 1). * * initial result = X' + { android.sync.frameNumber == F } * result1 = X' + { android.sync.frameNumber == F } * result2 = X' + { android.sync.frameNumber == CONVERGING } * result3 = X' + { android.sync.frameNumber == CONVERGING } * result4 = X' + { android.sync.frameNumber == 2 } * * where resultN has frameNumber N. * </code></pre> * <p>Since <code>result4</code> has a <code>frameNumber == 4</code> and * <code>android.sync.frameNumber == 2</code>, the distance is clearly * <code>4 - 2 = 2</code>.</p> * @see #SYNC_MAX_LATENCY_PER_FRAME_CONTROL * @see #SYNC_MAX_LATENCY_UNKNOWN */ public static final Key<Integer> SYNC_MAX_LATENCY = new Key<Integer>("android.sync.maxLatency", int.class); /*~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~ * End generated code *~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~O@*/ Loading core/java/android/hardware/camera2/CameraMetadata.java +63 −0 Original line number Diff line number Diff line Loading @@ -244,6 +244,32 @@ public abstract class CameraMetadata { */ public static final int INFO_SUPPORTED_HARDWARE_LEVEL_FULL = 1; // // Enumeration values for CameraCharacteristics#SYNC_MAX_LATENCY // /** * <p>Every frame has the requests immediately applied. * (and furthermore for all results, * <code>android.sync.frameNumber == android.request.frameCount</code>)</p> * <p>Changing controls over multiple requests one after another will * produce results that have those controls applied atomically * each frame.</p> * <p>All FULL capability devices will have this as their maxLatency.</p> * @see CameraCharacteristics#SYNC_MAX_LATENCY */ public static final int SYNC_MAX_LATENCY_PER_FRAME_CONTROL = 0; /** * <p>Each new frame has some subset (potentially the entire set) * of the past requests applied to the camera settings.</p> * <p>By submitting a series of identical requests, the camera device * will eventually have the camera settings applied, but it is * unknown when that exact point will be.</p> * @see CameraCharacteristics#SYNC_MAX_LATENCY */ public static final int SYNC_MAX_LATENCY_UNKNOWN = -1; // // Enumeration values for CaptureRequest#COLOR_CORRECTION_MODE // Loading Loading @@ -1397,6 +1423,43 @@ public abstract class CameraMetadata { */ public static final int STATISTICS_SCENE_FLICKER_60HZ = 2; // // Enumeration values for CaptureResult#SYNC_FRAME_NUMBER // /** * <p>The current result is not yet fully synchronized to any request. * Synchronization is in progress, and reading metadata from this * result may include a mix of data that have taken effect since the * last synchronization time.</p> * <p>In some future result, within {@link CameraCharacteristics#SYNC_MAX_LATENCY android.sync.maxLatency} frames, * this value will update to the actual frame number frame number * the result is guaranteed to be synchronized to (as long as the * request settings remain constant).</p> * * @see CameraCharacteristics#SYNC_MAX_LATENCY * @see CaptureResult#SYNC_FRAME_NUMBER * @hide */ public static final int SYNC_FRAME_NUMBER_CONVERGING = -1; /** * <p>The current result's synchronization status is unknown. The * result may have already converged, or it may be in progress. * Reading from this result may include some mix of settings from * past requests.</p> * <p>After a settings change, the new settings will eventually all * take effect for the output buffers and results. However, this * value will not change when that happens. Altering settings * rapidly may provide outcomes using mixes of settings from recent * requests.</p> * <p>This value is intended primarily for backwards compatibility with * the older camera implementations (for android.hardware.Camera).</p> * @see CaptureResult#SYNC_FRAME_NUMBER * @hide */ public static final int SYNC_FRAME_NUMBER_UNKNOWN = -2; /*~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~ * End generated code *~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~O@*/ Loading core/java/android/hardware/camera2/CaptureResult.java +61 −0 Original line number Diff line number Diff line Loading @@ -1737,6 +1737,67 @@ public final class CaptureResult extends CameraMetadata { public static final Key<Boolean> BLACK_LEVEL_LOCK = new Key<Boolean>("android.blackLevel.lock", boolean.class); /** * <p>The frame number corresponding to the last request * with which the output result (metadata + buffers) has been fully * synchronized.</p> * <p>When a request is submitted to the camera device, there is usually a * delay of several frames before the controls get applied. A camera * device may either choose to account for this delay by implementing a * pipeline and carefully submit well-timed atomic control updates, or * it may start streaming control changes that span over several frame * boundaries.</p> * <p>In the latter case, whenever a request's settings change relative to * the previous submitted request, the full set of changes may take * multiple frame durations to fully take effect. Some settings may * take effect sooner (in less frame durations) than others.</p> * <p>While a set of control changes are being propagated, this value * will be CONVERGING.</p> * <p>Once it is fully known that a set of control changes have been * finished propagating, and the resulting updated control settings * have been read back by the camera device, this value will be set * to a non-negative frame number (corresponding to the request to * which the results have synchronized to).</p> * <p>Older camera device implementations may not have a way to detect * when all camera controls have been applied, and will always set this * value to UNKNOWN.</p> * <p>FULL capability devices will always have this value set to the * frame number of the request corresponding to this result.</p> * <p><em>Further details</em>:</p> * <ul> * <li>Whenever a request differs from the last request, any future * results not yet returned may have this value set to CONVERGING (this * could include any in-progress captures not yet returned by the camera * device, for more details see pipeline considerations below).</li> * <li>Submitting a series of multiple requests that differ from the * previous request (e.g. r1, r2, r3 s.t. r1 != r2 != r3) * moves the new synchronization frame to the last non-repeating * request (using the smallest frame number from the contiguous list of * repeating requests).</li> * <li>Submitting the same request repeatedly will not change this value * to CONVERGING, if it was already a non-negative value.</li> * <li>When this value changes to non-negative, that means that all of the * metadata controls from the request have been applied, all of the * metadata controls from the camera device have been read to the * updated values (into the result), and all of the graphics buffers * corresponding to this result are also synchronized to the request.</li> * </ul> * <p><em>Pipeline considerations</em>:</p> * <p>Submitting a request with updated controls relative to the previously * submitted requests may also invalidate the synchronization state * of all the results corresponding to currently in-flight requests.</p> * <p>In other words, results for this current request and up to * {@link CameraCharacteristics#REQUEST_PIPELINE_MAX_DEPTH android.request.pipelineMaxDepth} prior requests may have their * android.sync.frameNumber change to CONVERGING.</p> * * @see CameraCharacteristics#REQUEST_PIPELINE_MAX_DEPTH * @see #SYNC_FRAME_NUMBER_CONVERGING * @see #SYNC_FRAME_NUMBER_UNKNOWN * @hide */ public static final Key<Integer> SYNC_FRAME_NUMBER = new Key<Integer>("android.sync.frameNumber", int.class); /*~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~ * End generated code *~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~O@*/ Loading Loading
api/current.txt +3 −0 Original line number Diff line number Diff line Loading @@ -11229,6 +11229,7 @@ package android.hardware.camera2 { field public static final android.hardware.camera2.CameraMetadata.Key SENSOR_ORIENTATION; field public static final android.hardware.camera2.CameraMetadata.Key STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES; field public static final android.hardware.camera2.CameraMetadata.Key STATISTICS_INFO_MAX_FACE_COUNT; field public static final android.hardware.camera2.CameraMetadata.Key SYNC_MAX_LATENCY; field public static final android.hardware.camera2.CameraMetadata.Key TONEMAP_MAX_CURVE_POINTS; } Loading Loading @@ -11410,6 +11411,8 @@ package android.hardware.camera2 { field public static final int STATISTICS_SCENE_FLICKER_50HZ = 1; // 0x1 field public static final int STATISTICS_SCENE_FLICKER_60HZ = 2; // 0x2 field public static final int STATISTICS_SCENE_FLICKER_NONE = 0; // 0x0 field public static final int SYNC_MAX_LATENCY_PER_FRAME_CONTROL = 0; // 0x0 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_HIGH_QUALITY = 2; // 0x2
core/java/android/hardware/camera2/CameraCharacteristics.java +38 −0 Original line number Diff line number Diff line Loading @@ -646,6 +646,44 @@ public final class CameraCharacteristics extends CameraMetadata { public static final Key<Integer> INFO_SUPPORTED_HARDWARE_LEVEL = new Key<Integer>("android.info.supportedHardwareLevel", int.class); /** * <p>The maximum number of frames that can occur after a request * (different than the previous) has been submitted, and before the * result's state becomes synchronized (by setting * android.sync.frameNumber to a non-negative value).</p> * <p>This defines the maximum distance (in number of metadata results), * between android.sync.frameNumber and the equivalent * android.request.frameCount.</p> * <p>In other words this acts as an upper boundary for how many frames * must occur before the camera device knows for a fact that the new * submitted camera settings have been applied in outgoing frames.</p> * <p>For example if the distance was 2,</p> * <pre><code>initial request = X (repeating) * request1 = X * request2 = Y * request3 = Y * request4 = Y * * where requestN has frameNumber N, and the first of the repeating * initial request's has frameNumber F (and F < 1). * * initial result = X' + { android.sync.frameNumber == F } * result1 = X' + { android.sync.frameNumber == F } * result2 = X' + { android.sync.frameNumber == CONVERGING } * result3 = X' + { android.sync.frameNumber == CONVERGING } * result4 = X' + { android.sync.frameNumber == 2 } * * where resultN has frameNumber N. * </code></pre> * <p>Since <code>result4</code> has a <code>frameNumber == 4</code> and * <code>android.sync.frameNumber == 2</code>, the distance is clearly * <code>4 - 2 = 2</code>.</p> * @see #SYNC_MAX_LATENCY_PER_FRAME_CONTROL * @see #SYNC_MAX_LATENCY_UNKNOWN */ public static final Key<Integer> SYNC_MAX_LATENCY = new Key<Integer>("android.sync.maxLatency", int.class); /*~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~ * End generated code *~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~O@*/ Loading
core/java/android/hardware/camera2/CameraMetadata.java +63 −0 Original line number Diff line number Diff line Loading @@ -244,6 +244,32 @@ public abstract class CameraMetadata { */ public static final int INFO_SUPPORTED_HARDWARE_LEVEL_FULL = 1; // // Enumeration values for CameraCharacteristics#SYNC_MAX_LATENCY // /** * <p>Every frame has the requests immediately applied. * (and furthermore for all results, * <code>android.sync.frameNumber == android.request.frameCount</code>)</p> * <p>Changing controls over multiple requests one after another will * produce results that have those controls applied atomically * each frame.</p> * <p>All FULL capability devices will have this as their maxLatency.</p> * @see CameraCharacteristics#SYNC_MAX_LATENCY */ public static final int SYNC_MAX_LATENCY_PER_FRAME_CONTROL = 0; /** * <p>Each new frame has some subset (potentially the entire set) * of the past requests applied to the camera settings.</p> * <p>By submitting a series of identical requests, the camera device * will eventually have the camera settings applied, but it is * unknown when that exact point will be.</p> * @see CameraCharacteristics#SYNC_MAX_LATENCY */ public static final int SYNC_MAX_LATENCY_UNKNOWN = -1; // // Enumeration values for CaptureRequest#COLOR_CORRECTION_MODE // Loading Loading @@ -1397,6 +1423,43 @@ public abstract class CameraMetadata { */ public static final int STATISTICS_SCENE_FLICKER_60HZ = 2; // // Enumeration values for CaptureResult#SYNC_FRAME_NUMBER // /** * <p>The current result is not yet fully synchronized to any request. * Synchronization is in progress, and reading metadata from this * result may include a mix of data that have taken effect since the * last synchronization time.</p> * <p>In some future result, within {@link CameraCharacteristics#SYNC_MAX_LATENCY android.sync.maxLatency} frames, * this value will update to the actual frame number frame number * the result is guaranteed to be synchronized to (as long as the * request settings remain constant).</p> * * @see CameraCharacteristics#SYNC_MAX_LATENCY * @see CaptureResult#SYNC_FRAME_NUMBER * @hide */ public static final int SYNC_FRAME_NUMBER_CONVERGING = -1; /** * <p>The current result's synchronization status is unknown. The * result may have already converged, or it may be in progress. * Reading from this result may include some mix of settings from * past requests.</p> * <p>After a settings change, the new settings will eventually all * take effect for the output buffers and results. However, this * value will not change when that happens. Altering settings * rapidly may provide outcomes using mixes of settings from recent * requests.</p> * <p>This value is intended primarily for backwards compatibility with * the older camera implementations (for android.hardware.Camera).</p> * @see CaptureResult#SYNC_FRAME_NUMBER * @hide */ public static final int SYNC_FRAME_NUMBER_UNKNOWN = -2; /*~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~ * End generated code *~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~O@*/ Loading
core/java/android/hardware/camera2/CaptureResult.java +61 −0 Original line number Diff line number Diff line Loading @@ -1737,6 +1737,67 @@ public final class CaptureResult extends CameraMetadata { public static final Key<Boolean> BLACK_LEVEL_LOCK = new Key<Boolean>("android.blackLevel.lock", boolean.class); /** * <p>The frame number corresponding to the last request * with which the output result (metadata + buffers) has been fully * synchronized.</p> * <p>When a request is submitted to the camera device, there is usually a * delay of several frames before the controls get applied. A camera * device may either choose to account for this delay by implementing a * pipeline and carefully submit well-timed atomic control updates, or * it may start streaming control changes that span over several frame * boundaries.</p> * <p>In the latter case, whenever a request's settings change relative to * the previous submitted request, the full set of changes may take * multiple frame durations to fully take effect. Some settings may * take effect sooner (in less frame durations) than others.</p> * <p>While a set of control changes are being propagated, this value * will be CONVERGING.</p> * <p>Once it is fully known that a set of control changes have been * finished propagating, and the resulting updated control settings * have been read back by the camera device, this value will be set * to a non-negative frame number (corresponding to the request to * which the results have synchronized to).</p> * <p>Older camera device implementations may not have a way to detect * when all camera controls have been applied, and will always set this * value to UNKNOWN.</p> * <p>FULL capability devices will always have this value set to the * frame number of the request corresponding to this result.</p> * <p><em>Further details</em>:</p> * <ul> * <li>Whenever a request differs from the last request, any future * results not yet returned may have this value set to CONVERGING (this * could include any in-progress captures not yet returned by the camera * device, for more details see pipeline considerations below).</li> * <li>Submitting a series of multiple requests that differ from the * previous request (e.g. r1, r2, r3 s.t. r1 != r2 != r3) * moves the new synchronization frame to the last non-repeating * request (using the smallest frame number from the contiguous list of * repeating requests).</li> * <li>Submitting the same request repeatedly will not change this value * to CONVERGING, if it was already a non-negative value.</li> * <li>When this value changes to non-negative, that means that all of the * metadata controls from the request have been applied, all of the * metadata controls from the camera device have been read to the * updated values (into the result), and all of the graphics buffers * corresponding to this result are also synchronized to the request.</li> * </ul> * <p><em>Pipeline considerations</em>:</p> * <p>Submitting a request with updated controls relative to the previously * submitted requests may also invalidate the synchronization state * of all the results corresponding to currently in-flight requests.</p> * <p>In other words, results for this current request and up to * {@link CameraCharacteristics#REQUEST_PIPELINE_MAX_DEPTH android.request.pipelineMaxDepth} prior requests may have their * android.sync.frameNumber change to CONVERGING.</p> * * @see CameraCharacteristics#REQUEST_PIPELINE_MAX_DEPTH * @see #SYNC_FRAME_NUMBER_CONVERGING * @see #SYNC_FRAME_NUMBER_UNKNOWN * @hide */ public static final Key<Integer> SYNC_FRAME_NUMBER = new Key<Integer>("android.sync.frameNumber", int.class); /*~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~ * End generated code *~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~O@*/ Loading