Loading include/system/graphics.h +173 −38 Original line number Original line Diff line number Diff line Loading @@ -45,9 +45,12 @@ enum { /* /* * "linear" color pixel formats: * "linear" color pixel formats: * * * The pixel formats below contain sRGB data but are otherwise treated * When used with ANativeWindow, the dataSpace field describes the color * as linear formats, i.e.: no special operation is performed when * space of the buffer. * reading or writing into a buffer in one of these formats * * 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. */ */ HAL_PIXEL_FORMAT_RGBA_8888 = 1, HAL_PIXEL_FORMAT_RGBA_8888 = 1, HAL_PIXEL_FORMAT_RGBX_8888 = 2, HAL_PIXEL_FORMAT_RGBX_8888 = 2, Loading @@ -55,25 +58,8 @@ enum { HAL_PIXEL_FORMAT_RGB_565 = 4, HAL_PIXEL_FORMAT_RGB_565 = 4, HAL_PIXEL_FORMAT_BGRA_8888 = 5, HAL_PIXEL_FORMAT_BGRA_8888 = 5, /* // Deprecated sRGB formats for source code compatibility * sRGB color pixel formats: // Not for use in new code * * 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_A_8888 = 0xC, HAL_PIXEL_FORMAT_sRGB_X_8888 = 0xD, HAL_PIXEL_FORMAT_sRGB_X_8888 = 0xD, Loading Loading @@ -111,6 +97,8 @@ enum { * cr_offset = y_size * cr_offset = y_size * cb_offset = y_size + c_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 HAL_PIXEL_FORMAT_YV12 = 0x32315659, // YCrCb 4:2:0 Planar Loading @@ -135,6 +123,8 @@ enum { * * * size = stride * height * size = stride * height * * * When used with ANativeWindow, the dataSpace field describes the color * space of the buffer. */ */ HAL_PIXEL_FORMAT_Y8 = 0x20203859, HAL_PIXEL_FORMAT_Y8 = 0x20203859, Loading @@ -159,6 +149,10 @@ enum { * * * size = stride * height * 2 * 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, HAL_PIXEL_FORMAT_Y16 = 0x20363159, Loading @@ -167,7 +161,7 @@ enum { * * * This format is exposed outside of the camera HAL to applications. * This format is exposed outside of the camera HAL to applications. * * * RAW_SENSOR is a single-channel, 16-bit, little endian format, typically * RAW16 is a single-channel, 16-bit, little endian format, typically * representing raw Bayer-pattern images from an image sensor, with minimal * representing raw Bayer-pattern images from an image sensor, with minimal * processing. * processing. * * Loading @@ -193,9 +187,15 @@ enum { * - GRALLOC_USAGE_HW_CAMERA_* * - GRALLOC_USAGE_HW_CAMERA_* * - GRALLOC_USAGE_SW_* * - GRALLOC_USAGE_SW_* * - GRALLOC_USAGE_RENDERSCRIPT * - 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, HAL_PIXEL_FORMAT_RAW16 = 0x20, HAL_PIXEL_FORMAT_RAW_SENSOR = 0x20, // TODO(rubenbrunk): Remove RAW_SENSOR. // Temporary alias for source code compatibility; do not use in new code HAL_PIXEL_FORMAT_RAW_SENSOR = HAL_PIXEL_FORMAT_RAW16, /* /* * Android RAW10 format: * Android RAW10 format: Loading Loading @@ -244,6 +244,10 @@ enum { * - GRALLOC_USAGE_HW_CAMERA_* * - GRALLOC_USAGE_HW_CAMERA_* * - GRALLOC_USAGE_SW_* * - GRALLOC_USAGE_SW_* * - GRALLOC_USAGE_RENDERSCRIPT * - 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, HAL_PIXEL_FORMAT_RAW10 = 0x25, Loading @@ -261,6 +265,10 @@ enum { * - GRALLOC_USAGE_HW_CAMERA_* * - GRALLOC_USAGE_HW_CAMERA_* * - GRALLOC_USAGE_SW_* * - GRALLOC_USAGE_SW_* * - GRALLOC_USAGE_RENDERSCRIPT * - 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, HAL_PIXEL_FORMAT_RAW_OPAQUE = 0x24, Loading @@ -276,6 +284,16 @@ enum { * * * Buffers of this format must have a height of 1, and width equal to their * Buffers of this format must have a height of 1, and width equal to their * size in bytes. * 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, HAL_PIXEL_FORMAT_BLOB = 0x21, Loading @@ -292,6 +310,8 @@ enum { * framework will assume that sampling the texture will always return an * 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). * 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, HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED = 0x22, Loading @@ -311,6 +331,9 @@ enum { * * * This format is locked for use by gralloc's (*lock_ycbcr) method, and * This format is locked for use by gralloc's (*lock_ycbcr) method, and * locking with the (*lock) method will return an error. * 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, HAL_PIXEL_FORMAT_YCbCr_420_888 = 0x23, Loading Loading @@ -354,6 +377,42 @@ struct android_ycbcr { uint32_t reserved[8]; uint32_t reserved[8]; }; }; /** * 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 * Transformation definitions * * Loading @@ -378,19 +437,33 @@ enum { }; }; /** /** * Colorspace Definitions * Dataspace Definitions * ====================== * ====================== * * * Colorspace is the definition of how pixel values should be interpreted. * Dataspace 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 * For many formats, this is the colorspace of the image data, which includes * range (within the bit depth). * 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. */ */ enum { 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, /* /* * Arbitrary colorspace with manually defined characteristics. * Arbitrary dataspace with manually defined characteristics. Definition * Colorspace definition must be communicated separately. * for colorspaces or other meaning must be communicated separately. * * * This is used when specifying primaries, transfer characteristics, * This is used when specifying primaries, transfer characteristics, * etc. separately. * etc. separately. Loading @@ -399,7 +472,57 @@ enum { * where a colorspace can have separately defined primaries, transfer * where a colorspace can have separately defined primaries, transfer * characteristics, etc. * characteristics, etc. */ */ HAL_COLORSPACE_ARBITRARY = 0x1, 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, /* /* * YCbCr Colorspaces * YCbCr Colorspaces Loading Loading @@ -429,7 +552,7 @@ enum { * red 0.640 0.330 * red 0.640 0.330 * white (D65) 0.3127 0.3290 * white (D65) 0.3127 0.3290 */ */ HAL_COLORSPACE_JFIF = 0x101, HAL_DATASPACE_JFIF = 0x101, /* /* * ITU-R Recommendation 601 (BT.601) - 625-line * ITU-R Recommendation 601 (BT.601) - 625-line Loading @@ -456,7 +579,7 @@ enum { * red 0.640 0.330 * red 0.640 0.330 * white (D65) 0.3127 0.3290 * white (D65) 0.3127 0.3290 */ */ HAL_COLORSPACE_BT601_625 = 0x102, HAL_DATASPACE_BT601_625 = 0x102, /* /* * ITU-R Recommendation 601 (BT.601) - 525-line * ITU-R Recommendation 601 (BT.601) - 525-line Loading @@ -483,7 +606,7 @@ enum { * red 0.630 0.340 * red 0.630 0.340 * white (D65) 0.3127 0.3290 * white (D65) 0.3127 0.3290 */ */ HAL_COLORSPACE_BT601_525 = 0x103, HAL_DATASPACE_BT601_525 = 0x103, /* /* * ITU-R Recommendation 709 (BT.709) * ITU-R Recommendation 709 (BT.709) Loading @@ -504,8 +627,20 @@ enum { * red 0.640 0.330 * red 0.640 0.330 * white (D65) 0.3127 0.3290 * white (D65) 0.3127 0.3290 */ */ HAL_COLORSPACE_BT709 = 0x104, 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; #ifdef __cplusplus #ifdef __cplusplus } } Loading include/system/window.h +28 −0 Original line number Original line Diff line number Diff line Loading @@ -262,6 +262,12 @@ enum { * the aspect ratio of the buffers produced. * the aspect ratio of the buffers produced. */ */ NATIVE_WINDOW_STICKY_TRANSFORM = 11, 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. /* Valid operations for the (*perform)() hook. Loading Loading @@ -294,6 +300,7 @@ enum { NATIVE_WINDOW_SET_POST_TRANSFORM_CROP = 16, /* private */ NATIVE_WINDOW_SET_POST_TRANSFORM_CROP = 16, /* private */ NATIVE_WINDOW_SET_BUFFERS_STICKY_TRANSFORM = 17,/* private */ NATIVE_WINDOW_SET_BUFFERS_STICKY_TRANSFORM = 17,/* private */ NATIVE_WINDOW_SET_SIDEBAND_STREAM = 18, NATIVE_WINDOW_SET_SIDEBAND_STREAM = 18, NATIVE_WINDOW_SET_BUFFERS_DATASPACE = 19 }; }; /* parameter for NATIVE_WINDOW_[API_][DIS]CONNECT */ /* parameter for NATIVE_WINDOW_[API_][DIS]CONNECT */ Loading Loading @@ -498,6 +505,7 @@ struct ANativeWindow * NATIVE_WINDOW_SET_BUFFERS_GEOMETRY (deprecated) * NATIVE_WINDOW_SET_BUFFERS_GEOMETRY (deprecated) * NATIVE_WINDOW_SET_BUFFERS_TRANSFORM * NATIVE_WINDOW_SET_BUFFERS_TRANSFORM * NATIVE_WINDOW_SET_BUFFERS_TIMESTAMP * NATIVE_WINDOW_SET_BUFFERS_TIMESTAMP * NATIVE_WINDOW_SET_BUFFERS_DATASPACE * NATIVE_WINDOW_SET_BUFFERS_DIMENSIONS * NATIVE_WINDOW_SET_BUFFERS_DIMENSIONS * NATIVE_WINDOW_SET_BUFFERS_FORMAT * NATIVE_WINDOW_SET_BUFFERS_FORMAT * NATIVE_WINDOW_SET_SCALING_MODE (private) * NATIVE_WINDOW_SET_SCALING_MODE (private) Loading Loading @@ -798,6 +806,26 @@ static inline int native_window_set_buffers_format( return window->perform(window, NATIVE_WINDOW_SET_BUFFERS_FORMAT, format); return window->perform(window, NATIVE_WINDOW_SET_BUFFERS_FORMAT, 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) * native_window_set_buffers_transform(..., int transform) * All buffers queued after this call will be displayed transformed according * All buffers queued after this call will be displayed transformed according Loading Loading
include/system/graphics.h +173 −38 Original line number Original line Diff line number Diff line Loading @@ -45,9 +45,12 @@ enum { /* /* * "linear" color pixel formats: * "linear" color pixel formats: * * * The pixel formats below contain sRGB data but are otherwise treated * When used with ANativeWindow, the dataSpace field describes the color * as linear formats, i.e.: no special operation is performed when * space of the buffer. * reading or writing into a buffer in one of these formats * * 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. */ */ HAL_PIXEL_FORMAT_RGBA_8888 = 1, HAL_PIXEL_FORMAT_RGBA_8888 = 1, HAL_PIXEL_FORMAT_RGBX_8888 = 2, HAL_PIXEL_FORMAT_RGBX_8888 = 2, Loading @@ -55,25 +58,8 @@ enum { HAL_PIXEL_FORMAT_RGB_565 = 4, HAL_PIXEL_FORMAT_RGB_565 = 4, HAL_PIXEL_FORMAT_BGRA_8888 = 5, HAL_PIXEL_FORMAT_BGRA_8888 = 5, /* // Deprecated sRGB formats for source code compatibility * sRGB color pixel formats: // Not for use in new code * * 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_A_8888 = 0xC, HAL_PIXEL_FORMAT_sRGB_X_8888 = 0xD, HAL_PIXEL_FORMAT_sRGB_X_8888 = 0xD, Loading Loading @@ -111,6 +97,8 @@ enum { * cr_offset = y_size * cr_offset = y_size * cb_offset = y_size + c_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 HAL_PIXEL_FORMAT_YV12 = 0x32315659, // YCrCb 4:2:0 Planar Loading @@ -135,6 +123,8 @@ enum { * * * size = stride * height * size = stride * height * * * When used with ANativeWindow, the dataSpace field describes the color * space of the buffer. */ */ HAL_PIXEL_FORMAT_Y8 = 0x20203859, HAL_PIXEL_FORMAT_Y8 = 0x20203859, Loading @@ -159,6 +149,10 @@ enum { * * * size = stride * height * 2 * 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, HAL_PIXEL_FORMAT_Y16 = 0x20363159, Loading @@ -167,7 +161,7 @@ enum { * * * This format is exposed outside of the camera HAL to applications. * This format is exposed outside of the camera HAL to applications. * * * RAW_SENSOR is a single-channel, 16-bit, little endian format, typically * RAW16 is a single-channel, 16-bit, little endian format, typically * representing raw Bayer-pattern images from an image sensor, with minimal * representing raw Bayer-pattern images from an image sensor, with minimal * processing. * processing. * * Loading @@ -193,9 +187,15 @@ enum { * - GRALLOC_USAGE_HW_CAMERA_* * - GRALLOC_USAGE_HW_CAMERA_* * - GRALLOC_USAGE_SW_* * - GRALLOC_USAGE_SW_* * - GRALLOC_USAGE_RENDERSCRIPT * - 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, HAL_PIXEL_FORMAT_RAW16 = 0x20, HAL_PIXEL_FORMAT_RAW_SENSOR = 0x20, // TODO(rubenbrunk): Remove RAW_SENSOR. // Temporary alias for source code compatibility; do not use in new code HAL_PIXEL_FORMAT_RAW_SENSOR = HAL_PIXEL_FORMAT_RAW16, /* /* * Android RAW10 format: * Android RAW10 format: Loading Loading @@ -244,6 +244,10 @@ enum { * - GRALLOC_USAGE_HW_CAMERA_* * - GRALLOC_USAGE_HW_CAMERA_* * - GRALLOC_USAGE_SW_* * - GRALLOC_USAGE_SW_* * - GRALLOC_USAGE_RENDERSCRIPT * - 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, HAL_PIXEL_FORMAT_RAW10 = 0x25, Loading @@ -261,6 +265,10 @@ enum { * - GRALLOC_USAGE_HW_CAMERA_* * - GRALLOC_USAGE_HW_CAMERA_* * - GRALLOC_USAGE_SW_* * - GRALLOC_USAGE_SW_* * - GRALLOC_USAGE_RENDERSCRIPT * - 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, HAL_PIXEL_FORMAT_RAW_OPAQUE = 0x24, Loading @@ -276,6 +284,16 @@ enum { * * * Buffers of this format must have a height of 1, and width equal to their * Buffers of this format must have a height of 1, and width equal to their * size in bytes. * 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, HAL_PIXEL_FORMAT_BLOB = 0x21, Loading @@ -292,6 +310,8 @@ enum { * framework will assume that sampling the texture will always return an * 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). * 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, HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED = 0x22, Loading @@ -311,6 +331,9 @@ enum { * * * This format is locked for use by gralloc's (*lock_ycbcr) method, and * This format is locked for use by gralloc's (*lock_ycbcr) method, and * locking with the (*lock) method will return an error. * 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, HAL_PIXEL_FORMAT_YCbCr_420_888 = 0x23, Loading Loading @@ -354,6 +377,42 @@ struct android_ycbcr { uint32_t reserved[8]; uint32_t reserved[8]; }; }; /** * 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 * Transformation definitions * * Loading @@ -378,19 +437,33 @@ enum { }; }; /** /** * Colorspace Definitions * Dataspace Definitions * ====================== * ====================== * * * Colorspace is the definition of how pixel values should be interpreted. * Dataspace 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 * For many formats, this is the colorspace of the image data, which includes * range (within the bit depth). * 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. */ */ enum { 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, /* /* * Arbitrary colorspace with manually defined characteristics. * Arbitrary dataspace with manually defined characteristics. Definition * Colorspace definition must be communicated separately. * for colorspaces or other meaning must be communicated separately. * * * This is used when specifying primaries, transfer characteristics, * This is used when specifying primaries, transfer characteristics, * etc. separately. * etc. separately. Loading @@ -399,7 +472,57 @@ enum { * where a colorspace can have separately defined primaries, transfer * where a colorspace can have separately defined primaries, transfer * characteristics, etc. * characteristics, etc. */ */ HAL_COLORSPACE_ARBITRARY = 0x1, 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, /* /* * YCbCr Colorspaces * YCbCr Colorspaces Loading Loading @@ -429,7 +552,7 @@ enum { * red 0.640 0.330 * red 0.640 0.330 * white (D65) 0.3127 0.3290 * white (D65) 0.3127 0.3290 */ */ HAL_COLORSPACE_JFIF = 0x101, HAL_DATASPACE_JFIF = 0x101, /* /* * ITU-R Recommendation 601 (BT.601) - 625-line * ITU-R Recommendation 601 (BT.601) - 625-line Loading @@ -456,7 +579,7 @@ enum { * red 0.640 0.330 * red 0.640 0.330 * white (D65) 0.3127 0.3290 * white (D65) 0.3127 0.3290 */ */ HAL_COLORSPACE_BT601_625 = 0x102, HAL_DATASPACE_BT601_625 = 0x102, /* /* * ITU-R Recommendation 601 (BT.601) - 525-line * ITU-R Recommendation 601 (BT.601) - 525-line Loading @@ -483,7 +606,7 @@ enum { * red 0.630 0.340 * red 0.630 0.340 * white (D65) 0.3127 0.3290 * white (D65) 0.3127 0.3290 */ */ HAL_COLORSPACE_BT601_525 = 0x103, HAL_DATASPACE_BT601_525 = 0x103, /* /* * ITU-R Recommendation 709 (BT.709) * ITU-R Recommendation 709 (BT.709) Loading @@ -504,8 +627,20 @@ enum { * red 0.640 0.330 * red 0.640 0.330 * white (D65) 0.3127 0.3290 * white (D65) 0.3127 0.3290 */ */ HAL_COLORSPACE_BT709 = 0x104, 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; #ifdef __cplusplus #ifdef __cplusplus } } Loading
include/system/window.h +28 −0 Original line number Original line Diff line number Diff line Loading @@ -262,6 +262,12 @@ enum { * the aspect ratio of the buffers produced. * the aspect ratio of the buffers produced. */ */ NATIVE_WINDOW_STICKY_TRANSFORM = 11, 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. /* Valid operations for the (*perform)() hook. Loading Loading @@ -294,6 +300,7 @@ enum { NATIVE_WINDOW_SET_POST_TRANSFORM_CROP = 16, /* private */ NATIVE_WINDOW_SET_POST_TRANSFORM_CROP = 16, /* private */ NATIVE_WINDOW_SET_BUFFERS_STICKY_TRANSFORM = 17,/* private */ NATIVE_WINDOW_SET_BUFFERS_STICKY_TRANSFORM = 17,/* private */ NATIVE_WINDOW_SET_SIDEBAND_STREAM = 18, NATIVE_WINDOW_SET_SIDEBAND_STREAM = 18, NATIVE_WINDOW_SET_BUFFERS_DATASPACE = 19 }; }; /* parameter for NATIVE_WINDOW_[API_][DIS]CONNECT */ /* parameter for NATIVE_WINDOW_[API_][DIS]CONNECT */ Loading Loading @@ -498,6 +505,7 @@ struct ANativeWindow * NATIVE_WINDOW_SET_BUFFERS_GEOMETRY (deprecated) * NATIVE_WINDOW_SET_BUFFERS_GEOMETRY (deprecated) * NATIVE_WINDOW_SET_BUFFERS_TRANSFORM * NATIVE_WINDOW_SET_BUFFERS_TRANSFORM * NATIVE_WINDOW_SET_BUFFERS_TIMESTAMP * NATIVE_WINDOW_SET_BUFFERS_TIMESTAMP * NATIVE_WINDOW_SET_BUFFERS_DATASPACE * NATIVE_WINDOW_SET_BUFFERS_DIMENSIONS * NATIVE_WINDOW_SET_BUFFERS_DIMENSIONS * NATIVE_WINDOW_SET_BUFFERS_FORMAT * NATIVE_WINDOW_SET_BUFFERS_FORMAT * NATIVE_WINDOW_SET_SCALING_MODE (private) * NATIVE_WINDOW_SET_SCALING_MODE (private) Loading Loading @@ -798,6 +806,26 @@ static inline int native_window_set_buffers_format( return window->perform(window, NATIVE_WINDOW_SET_BUFFERS_FORMAT, format); return window->perform(window, NATIVE_WINDOW_SET_BUFFERS_FORMAT, 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) * native_window_set_buffers_transform(..., int transform) * All buffers queued after this call will be displayed transformed according * All buffers queued after this call will be displayed transformed according Loading