diff options
-rw-r--r-- | include/system/graphics.h | 211 | ||||
-rw-r--r-- | include/system/window.h | 28 |
2 files changed, 38 insertions, 201 deletions
diff --git a/include/system/graphics.h b/include/system/graphics.h index efd48cb..c3fca97 100644 --- a/include/system/graphics.h +++ b/include/system/graphics.h @@ -45,12 +45,9 @@ enum { /* * "linear" color pixel formats: * - * When used with ANativeWindow, the dataSpace field describes the color - * space of the buffer. - * - * The color space determines, for example, if the formats are linear or - * gamma-corrected; or whether any special operations are performed when - * reading or writing into a buffer in one of these formats. + * The pixel formats below contain sRGB data but are otherwise treated + * as linear formats, i.e.: no special operation is performed when + * reading or writing into a buffer in one of these formats */ HAL_PIXEL_FORMAT_RGBA_8888 = 1, HAL_PIXEL_FORMAT_RGBX_8888 = 2, @@ -58,8 +55,25 @@ enum { HAL_PIXEL_FORMAT_RGB_565 = 4, HAL_PIXEL_FORMAT_BGRA_8888 = 5, - // Deprecated sRGB formats for source code compatibility - // Not for use in new code + /* + * sRGB color pixel formats: + * + * The red, green and blue components are stored in sRGB space, and converted + * to linear space when read, using the standard sRGB to linear equation: + * + * Clinear = Csrgb / 12.92 for Csrgb <= 0.04045 + * = (Csrgb + 0.055 / 1.055)^2.4 for Csrgb > 0.04045 + * + * When written the inverse transformation is performed: + * + * Csrgb = 12.92 * Clinear for Clinear <= 0.0031308 + * = 1.055 * Clinear^(1/2.4) - 0.055 for Clinear > 0.0031308 + * + * + * The alpha component, if present, is always stored in linear space and + * is left unmodified when read or written. + * + */ HAL_PIXEL_FORMAT_sRGB_A_8888 = 0xC, HAL_PIXEL_FORMAT_sRGB_X_8888 = 0xD, @@ -97,8 +111,6 @@ enum { * cr_offset = y_size * cb_offset = y_size + c_size * - * When used with ANativeWindow, the dataSpace field describes the color - * space of the buffer. */ HAL_PIXEL_FORMAT_YV12 = 0x32315659, // YCrCb 4:2:0 Planar @@ -123,8 +135,6 @@ enum { * * size = stride * height * - * When used with ANativeWindow, the dataSpace field describes the color - * space of the buffer. */ HAL_PIXEL_FORMAT_Y8 = 0x20203859, @@ -149,10 +159,6 @@ enum { * * size = stride * height * 2 * - * When used with ANativeWindow, the dataSpace field describes the color - * space of the buffer, except that dataSpace field - * HAL_DATASPACE_DEPTH indicates that this buffer contains a depth - * image where each sample is a distance value measured by a depth camera. */ HAL_PIXEL_FORMAT_Y16 = 0x20363159, @@ -161,7 +167,7 @@ enum { * * This format is exposed outside of the camera HAL to applications. * - * RAW16 is a single-channel, 16-bit, little endian format, typically + * RAW_SENSOR is a single-channel, 16-bit, little endian format, typically * representing raw Bayer-pattern images from an image sensor, with minimal * processing. * @@ -187,15 +193,9 @@ enum { * - GRALLOC_USAGE_HW_CAMERA_* * - GRALLOC_USAGE_SW_* * - GRALLOC_USAGE_RENDERSCRIPT - * - * When used with ANativeWindow, the dataSpace should be - * HAL_DATASPACE_ARBITRARY, as raw image sensor buffers require substantial - * extra metadata to define. */ HAL_PIXEL_FORMAT_RAW16 = 0x20, - - // Temporary alias for source code compatibility; do not use in new code - HAL_PIXEL_FORMAT_RAW_SENSOR = HAL_PIXEL_FORMAT_RAW16, + HAL_PIXEL_FORMAT_RAW_SENSOR = 0x20, // TODO(rubenbrunk): Remove RAW_SENSOR. /* * Android RAW10 format: @@ -244,10 +244,6 @@ enum { * - GRALLOC_USAGE_HW_CAMERA_* * - GRALLOC_USAGE_SW_* * - GRALLOC_USAGE_RENDERSCRIPT - * - * When used with ANativeWindow, the dataSpace field should be - * HAL_DATASPACE_ARBITRARY, as raw image sensor buffers require substantial - * extra metadata to define. */ HAL_PIXEL_FORMAT_RAW10 = 0x25, @@ -265,10 +261,6 @@ enum { * - GRALLOC_USAGE_HW_CAMERA_* * - GRALLOC_USAGE_SW_* * - GRALLOC_USAGE_RENDERSCRIPT - * - * When used with ANativeWindow, the dataSpace field should be - * HAL_DATASPACE_ARBITRARY, as raw image sensor buffers require substantial - * extra metadata to define. */ HAL_PIXEL_FORMAT_RAW_OPAQUE = 0x24, @@ -284,16 +276,6 @@ enum { * * Buffers of this format must have a height of 1, and width equal to their * size in bytes. - * - * When used with ANativeWindow, the mapping of the dataSpace field to - * buffer contents for BLOB is as follows: - * - * dataSpace value | Buffer contents - * -------------------------------+----------------------------------------- - * HAL_DATASPACE_JFIF | An encoded JPEG image - * HAL_DATASPACE_DEPTH | An android_depth_points buffer - * Other | Unsupported - * */ HAL_PIXEL_FORMAT_BLOB = 0x21, @@ -310,8 +292,6 @@ enum { * framework will assume that sampling the texture will always return an * alpha value of 1.0 (i.e. the buffer contains only opaque pixel values). * - * When used with ANativeWindow, the dataSpace field describes the color - * space of the buffer. */ HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED = 0x22, @@ -331,9 +311,6 @@ enum { * * This format is locked for use by gralloc's (*lock_ycbcr) method, and * locking with the (*lock) method will return an error. - * - * When used with ANativeWindow, the dataSpace field describes the color - * space of the buffer. */ HAL_PIXEL_FORMAT_YCbCr_420_888 = 0x23, @@ -378,42 +355,6 @@ struct android_ycbcr { }; /** - * Structure used to define depth point clouds for format HAL_PIXEL_FORMAT_BLOB - * with dataSpace value of HAL_DATASPACE_DEPTH. - * When locking a native buffer of the above format and dataSpace value, - * the vaddr pointer can be cast to this structure. - * - * A variable-length list of (x,y,z) 3D points, as floats. - * - * @num_points is the number of points in the list - * - * @xyz_points is the flexible array of floating-point values. - * It contains (num_points) * 3 floats. - * - * For example: - * android_depth_points d = get_depth_buffer(); - * struct { - * float x; float y; float z; - * } firstPoint, lastPoint; - * - * firstPoint.x = d.xyz_points[0]; - * firstPoint.y = d.xyz_points[1]; - * firstPoint.z = d.xyz_points[2]; - * lastPoint.x = d.xyz_points[(d.num_points - 1) * 3 + 0]; - * lastPoint.y = d.xyz_points[(d.num_points - 1) * 3 + 1]; - * lastPoint.z = d.xyz_points[(d.num_points - 1) * 3 + 2]; - */ - -struct android_depth_points { - uint32_t num_points; - - /** reserved for future use, set to 0 by gralloc's (*lock)() */ - uint32_t reserved[8]; - - float xyz_points[]; -}; - -/** * Transformation definitions * * IMPORTANT NOTE: @@ -437,33 +378,19 @@ enum { }; /** - * Dataspace Definitions + * Colorspace Definitions * ====================== * - * Dataspace is the definition of how pixel values should be interpreted. - * - * For many formats, this is the colorspace of the image data, which includes - * primaries (including white point) and the transfer characteristic function, - * which describes both gamma curve and numeric range (within the bit depth). - * - * Other dataspaces include depth measurement data from a depth camera. + * Colorspace is the definition of how pixel values should be interpreted. + * It includes primaries (including white point) and the transfer + * characteristic function, which describes both gamma curve and numeric + * range (within the bit depth). */ -typedef enum android_dataspace { - /* - * Default-assumption data space, when not explicitly specified. - * - * It is safest to assume the buffer is an image with sRGB primaries and - * encoding ranges, but the consumer and/or the producer of the data may - * simply be using defaults. No automatic gamma transform should be - * expected, except for a possible display gamma transform when drawn to a - * screen. - */ - HAL_DATASPACE_UNKNOWN = 0x0, - +enum { /* - * Arbitrary dataspace with manually defined characteristics. Definition - * for colorspaces or other meaning must be communicated separately. + * Arbitrary colorspace with manually defined characteristics. + * Colorspace definition must be communicated separately. * * This is used when specifying primaries, transfer characteristics, * etc. separately. @@ -472,57 +399,7 @@ typedef enum android_dataspace { * where a colorspace can have separately defined primaries, transfer * characteristics, etc. */ - HAL_DATASPACE_ARBITRARY = 0x1, - - /* - * RGB Colorspaces - * ----------------- - * - * Primaries are given using (x,y) coordinates in the CIE 1931 definition - * of x and y specified by ISO 11664-1. - * - * Transfer characteristics are the opto-electronic transfer characteristic - * at the source as a function of linear optical intensity (luminance). - */ - - /* - * sRGB linear encoding: - * - * The red, green, and blue components are stored in sRGB space, but - * are linear, not gamma-encoded. - * The RGB primaries and the white point are the same as BT.709. - * - * The values are encoded using the full range ([0,255] for 8-bit) for all - * components. - */ - HAL_DATASPACE_SRGB_LINEAR = 0x200, - - /* - * sRGB gamma encoding: - * - * The red, green and blue components are stored in sRGB space, and - * converted to linear space when read, using the standard sRGB to linear - * equation: - * - * Clinear = Csrgb / 12.92 for Csrgb <= 0.04045 - * = (Csrgb + 0.055 / 1.055)^2.4 for Csrgb > 0.04045 - * - * When written the inverse transformation is performed: - * - * Csrgb = 12.92 * Clinear for Clinear <= 0.0031308 - * = 1.055 * Clinear^(1/2.4) - 0.055 for Clinear > 0.0031308 - * - * - * The alpha component, if present, is always stored in linear space and - * is left unmodified when read or written. - * - * The RGB primaries and the white point are the same as BT.709. - * - * The values are encoded using the full range ([0,255] for 8-bit) for all - * components. - * - */ - HAL_DATASPACE_SRGB = 0x201, + HAL_COLORSPACE_ARBITRARY = 0x1, /* * YCbCr Colorspaces @@ -552,7 +429,7 @@ typedef enum android_dataspace { * red 0.640 0.330 * white (D65) 0.3127 0.3290 */ - HAL_DATASPACE_JFIF = 0x101, + HAL_COLORSPACE_JFIF = 0x101, /* * ITU-R Recommendation 601 (BT.601) - 625-line @@ -579,7 +456,7 @@ typedef enum android_dataspace { * red 0.640 0.330 * white (D65) 0.3127 0.3290 */ - HAL_DATASPACE_BT601_625 = 0x102, + HAL_COLORSPACE_BT601_625 = 0x102, /* * ITU-R Recommendation 601 (BT.601) - 525-line @@ -606,7 +483,7 @@ typedef enum android_dataspace { * red 0.630 0.340 * white (D65) 0.3127 0.3290 */ - HAL_DATASPACE_BT601_525 = 0x103, + HAL_COLORSPACE_BT601_525 = 0x103, /* * ITU-R Recommendation 709 (BT.709) @@ -627,20 +504,8 @@ typedef enum android_dataspace { * red 0.640 0.330 * white (D65) 0.3127 0.3290 */ - HAL_DATASPACE_BT709 = 0x104, - - /* - * The buffer contains depth ranging measurements from a depth camera. - * This value is valid with formats: - * HAL_PIXEL_FORMAT_Y16: 16-bit single channel depth image. - * HAL_PIXEL_FORMAT_BLOB: A depth point cloud, as - * a variable-length float (x,y,z) coordinate point list. - * The point cloud will be represented with the android_depth_points - * structure. - */ - HAL_DATASPACE_DEPTH = 0x1000 - -} android_dataspace_t; + HAL_COLORSPACE_BT709 = 0x104, +}; #ifdef __cplusplus } diff --git a/include/system/window.h b/include/system/window.h index af0418b..bf93b79 100644 --- a/include/system/window.h +++ b/include/system/window.h @@ -262,12 +262,6 @@ enum { * the aspect ratio of the buffers produced. */ NATIVE_WINDOW_STICKY_TRANSFORM = 11, - - /** - * The default data space for the buffers as set by the consumer. - * The values are defined in graphics.h. - */ - NATIVE_WINDOW_DEFAULT_DATASPACE = 12 }; /* Valid operations for the (*perform)() hook. @@ -300,7 +294,6 @@ enum { NATIVE_WINDOW_SET_POST_TRANSFORM_CROP = 16, /* private */ NATIVE_WINDOW_SET_BUFFERS_STICKY_TRANSFORM = 17,/* private */ NATIVE_WINDOW_SET_SIDEBAND_STREAM = 18, - NATIVE_WINDOW_SET_BUFFERS_DATASPACE = 19 }; /* parameter for NATIVE_WINDOW_[API_][DIS]CONNECT */ @@ -505,7 +498,6 @@ struct ANativeWindow * NATIVE_WINDOW_SET_BUFFERS_GEOMETRY (deprecated) * NATIVE_WINDOW_SET_BUFFERS_TRANSFORM * NATIVE_WINDOW_SET_BUFFERS_TIMESTAMP - * NATIVE_WINDOW_SET_BUFFERS_DATASPACE * NATIVE_WINDOW_SET_BUFFERS_DIMENSIONS * NATIVE_WINDOW_SET_BUFFERS_FORMAT * NATIVE_WINDOW_SET_SCALING_MODE (private) @@ -807,26 +799,6 @@ static inline int native_window_set_buffers_format( } /* - * native_window_set_buffers_data_space(..., int dataSpace) - * All buffers queued after this call will be associated with the dataSpace - * parameter specified. - * - * dataSpace specifies additional information about the buffer that's dependent - * on the buffer format and the endpoints. For example, it can be used to convey - * the color space of the image data in the buffer, or it can be used to - * indicate that the buffers contain depth measurement data instead of color - * images. The default dataSpace is 0, HAL_DATASPACE_UNKNOWN, unless it has been - * overridden by the consumer. - */ -static inline int native_window_set_buffers_data_space( - struct ANativeWindow* window, - android_dataspace_t dataSpace) -{ - return window->perform(window, NATIVE_WINDOW_SET_BUFFERS_DATASPACE, - dataSpace); -} - -/* * native_window_set_buffers_transform(..., int transform) * All buffers queued after this call will be displayed transformed according * to the transform parameter specified. |