Camera: Add Y8 format in Camera NDK

Test: Camera CTS
Bug: 70216652
Change-Id: Ib8436bcb8347ec82353afc8a89e9702d90ce6e53
gugelfrei
Shuzhen Wang 6 years ago
parent e6d5668489
commit 1cfbbecbcf

@ -2783,7 +2783,7 @@ typedef enum acamera_metadata_tag {
* {@link AIMAGE_FORMAT_RAW12 RAW12}.</li>
* <li>Processed (but not-stalling): any non-RAW format without a stall duration. Typically
* {@link AIMAGE_FORMAT_YUV_420_888 YUV_420_888},
* <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a>, or <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a>.</li>
* <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a>, <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a>, or {@link AIMAGE_FORMAT_Y8 Y8} .</li>
* </ul>
*
* @see ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS
@ -3251,6 +3251,7 @@ typedef enum acamera_metadata_tag {
* <li>{@link AIMAGE_FORMAT_YUV_420_888 }</li>
* <li>{@link AIMAGE_FORMAT_RAW10 }</li>
* <li>{@link AIMAGE_FORMAT_RAW12 }</li>
* <li>{@link AIMAGE_FORMAT_Y8 }</li>
* </ul>
* <p>All other formats may or may not have an allowed stall duration on
* a per-capability basis; refer to ACAMERA_REQUEST_AVAILABLE_CAPABILITIES
@ -5457,8 +5458,8 @@ typedef enum acamera_metadata_tag {
* will not slow down capture rate when applying correction. FAST may be the same as OFF if
* any correction at all would slow down capture rate. Every output stream will have a
* similar amount of enhancement applied.</p>
* <p>The correction only applies to processed outputs such as YUV, JPEG, or DEPTH16; it is not
* applied to any RAW output.</p>
* <p>The correction only applies to processed outputs such as YUV, Y8, JPEG, or DEPTH16; it is
* not applied to any RAW output.</p>
* <p>This control will be on by default on devices that support this control. Applications
* disabling distortion correction need to pay extra attention with the coordinate system of
* metering regions, crop region, and face rectangles. When distortion correction is OFF,
@ -7143,7 +7144,7 @@ typedef enum acamera_metadata_enum_acamera_request_available_capabilities {
* camera device can capture this size for at least 10 frames per second. Also the
* ACAMERA_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES entry lists at least one FPS range where
* the minimum FPS is &gt;= 1 / minimumFrameDuration for the largest YUV_420_888 size.</p>
* <p>If the device supports the {@link AIMAGE_FORMAT_RAW10 }, {@link AIMAGE_FORMAT_RAW12 }, then those can also be
* <p>If the device supports the {@link AIMAGE_FORMAT_RAW10 }, {@link AIMAGE_FORMAT_RAW12 }, {@link AIMAGE_FORMAT_Y8 }, then those can also be
* captured at the same rate as the maximum-size YUV_420_888 resolution is.</p>
* <p>In addition, the ACAMERA_SYNC_MAX_LATENCY field is guaranted to have a value between 0
* and 4, inclusive. ACAMERA_CONTROL_AE_LOCK_AVAILABLE and ACAMERA_CONTROL_AWB_LOCK_AVAILABLE
@ -7177,8 +7178,8 @@ typedef enum acamera_metadata_enum_acamera_request_available_capabilities {
* <li>The ACAMERA_DEPTH_DEPTH_IS_EXCLUSIVE entry is listed by this device.</li>
* <li>As of Android P, the ACAMERA_LENS_POSE_REFERENCE entry is listed by this device.</li>
* <li>A LIMITED camera with only the DEPTH_OUTPUT capability does not have to support
* normal YUV_420_888, JPEG, and PRIV-format outputs. It only has to support the DEPTH16
* format.</li>
* normal YUV_420_888, Y8, JPEG, and PRIV-format outputs. It only has to support the
* DEPTH16 format.</li>
* </ul>
* <p>Generally, depth output operates at a slower frame rate than standard color capture,
* so the DEPTH16 and DEPTH_POINT_CLOUD formats will commonly have a stall duration that
@ -7272,6 +7273,10 @@ typedef enum acamera_metadata_enum_acamera_request_available_capabilities {
/**
* <p>The camera device is a monochrome camera that doesn't contain a color filter array,
* and the pixel values on U and V planes are all 128.</p>
* <p>A MONOCHROME camera must support the guaranteed stream combinations required for
* its device level and capabilities. Additionally, if the monochrome camera device
* supports Y8 format, all mandatory stream combination requirements related to {@link AIMAGE_FORMAT_YUV_420_888 YUV_420_888} apply
* to {@link AIMAGE_FORMAT_Y8 Y8} as well.</p>
*/
ACAMERA_REQUEST_AVAILABLE_CAPABILITIES_MONOCHROME = 12,

@ -68,6 +68,7 @@ AImageReader::isSupportedFormatAndUsage(int32_t format, uint64_t usage) {
case AIMAGE_FORMAT_RAW12:
case AIMAGE_FORMAT_DEPTH16:
case AIMAGE_FORMAT_DEPTH_POINT_CLOUD:
case AIMAGE_FORMAT_Y8:
return true;
case AIMAGE_FORMAT_PRIVATE:
// For private format, cpu usage is prohibited.
@ -94,6 +95,7 @@ AImageReader::getNumPlanesForFormat(int32_t format) {
case AIMAGE_FORMAT_RAW12:
case AIMAGE_FORMAT_DEPTH16:
case AIMAGE_FORMAT_DEPTH_POINT_CLOUD:
case AIMAGE_FORMAT_Y8:
return 1;
case AIMAGE_FORMAT_PRIVATE:
return 0;

@ -499,7 +499,34 @@ enum AIMAGE_FORMATS {
* <p>When an {@link AImage} of this format is obtained from an {@link AImageReader} or
* {@link AImage_getNumberOfPlanes()} method will return zero.</p>
*/
AIMAGE_FORMAT_PRIVATE = 0x22
AIMAGE_FORMAT_PRIVATE = 0x22,
/**
* Android Y8 format.
*
* <p>Y8 is a planar format comprised of a WxH Y plane only, with each pixel
* being represented by 8 bits.</p>
*
* <p>This format assumes
* <ul>
* <li>an even width</li>
* <li>an even height</li>
* <li>a horizontal stride multiple of 16 pixels</li>
* </ul>
* </p>
*
* <pre> size = stride * height </pre>
*
* <p>For example, the {@link AImage} object can provide data
* in this format from a {@link ACameraDevice} (if supported) through a
* {@link AImageReader} object. The number of planes returned by
* {@link AImage_getNumberOfPlanes} will always be 1. The pixel stride returned by
* {@link AImage_getPlanePixelStride} will always be 1, and the
* {@link AImage_getPlaneRowStride} described the vertical neighboring pixel distance
* (in bytes) between adjacent rows.</p>
*
*/
AIMAGE_FORMAT_Y8 = 0x20203859
};
/**

Loading…
Cancel
Save