Create API for reporting color space support to Camera2 framework consumers.
Test: Ran CtsCameraTestCases
Test: Ran new VTS test for color space reporting
Test: Created app to test display P3 camera, switching between color spaces
Bug: 238359088
Change-Id: I9d9f99954198ea3743dcdb74083985759a112669
diff --git a/camera/Android.bp b/camera/Android.bp
index 28a2a11..019e892 100644
--- a/camera/Android.bp
+++ b/camera/Android.bp
@@ -67,7 +67,7 @@
local_include_dirs: ["include"],
static_libs: [
- "android.hardware.camera.metadata-V1-ndk",
+ "android.hardware.camera.metadata-V2-ndk",
],
cflags: [
diff --git a/camera/docs/camera_device_info.proto b/camera/docs/camera_device_info.proto
index 908f0de..a7ca34b 100644
--- a/camera/docs/camera_device_info.proto
+++ b/camera/docs/camera_device_info.proto
@@ -138,6 +138,7 @@
repeated int32 android_request_availableCapabilities = 851974;
optional DynamicRangeProfiles android_request_availableDynamicRangeProfiles = 851975;
optional int64 android_request_recommendedTenBitDynamicRangeProfile = 851976;
+ optional ColorSpaceProfiles android_request_availableColorSpaceProfiles = 851977;
optional float android_scaler_availableMaxDigitalZoom = 917504;
optional StreamConfigurations android_scaler_streamConfigurationMap = 917505;
optional int32 android_scaler_croppingType = 917506;
diff --git a/camera/docs/docs.html b/camera/docs/docs.html
index c978d15..d0738fb 100644
--- a/camera/docs/docs.html
+++ b/camera/docs/docs.html
@@ -711,6 +711,10 @@
><a href="#static_android.request.availableDynamicRangeProfilesMap">android.request.availableDynamicRangeProfilesMap</a></li>
<li
><a href="#static_android.request.recommendedTenBitDynamicRangeProfile">android.request.recommendedTenBitDynamicRangeProfile</a></li>
+ <li
+ ><a href="#static_android.request.availableColorSpaceProfiles">android.request.availableColorSpaceProfiles</a></li>
+ <li
+ ><a href="#static_android.request.availableColorSpaceProfilesMap">android.request.availableColorSpaceProfilesMap</a></li>
</ul>
</li>
<li>
@@ -19439,6 +19443,24 @@
mandatory stream combinations involving stream use cases,<wbr/> which can also be queried
via <a href="https://developer.android.com/reference/android/hardware/camera2/params/MandatoryStreamCombination.html">MandatoryStreamCombination</a>.<wbr/></p></span>
</li>
+ <li>
+ <span class="entry_type_enum_name">COLOR_SPACE_PROFILES (v3.9)</span>
+ <span class="entry_type_enum_optional">[optional]</span>
+ <span class="entry_type_enum_hidden">[java_public]</span>
+ <span class="entry_type_enum_notes"><p>The device supports querying the possible combinations of color spaces,<wbr/> image
+formats,<wbr/> and dynamic range profiles supported by the camera and requesting a
+particular color space for a session via
+<a href="https://developer.android.com/reference/android/hardware/camera2/params/SessionConfiguration.html#setColorSpace">SessionConfiguration#setColorSpace</a>.<wbr/></p>
+<p>Cameras that enable this capability may or may not also implement dynamic range
+profiles.<wbr/> If they don't,<wbr/>
+<a href="https://developer.android.com/reference/android/hardware/camera2/params/ColorSpaceProfiles.html#getSupportedDynamicRangeProfiles">ColorSpaceProfiles#getSupportedDynamicRangeProfiles</a>
+will return only
+<a href="https://developer.android.com/reference/android/hardware/camera2/params/DynamicRangeProfiles.html#STANDARD">DynamicRangeProfiles#STANDARD</a> and
+<a href="https://developer.android.com/reference/android/hardware/camera2/params/ColorSpaceProfiles.html#getSupportedColorSpacesForDynamicRange">ColorSpaceProfiles#getSupportedColorSpacesForDynamicRange</a>
+will assume support of the
+<a href="https://developer.android.com/reference/android/hardware/camera2/params/DynamicRangeProfiles.html#STANDARD">DynamicRangeProfiles#STANDARD</a>
+profile in all combinations of color spaces and image formats.<wbr/></p></span>
+ </li>
</ul>
</td> <!-- entry_type -->
@@ -20399,6 +20421,263 @@
<tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
+
+ <tr class="entry" id="static_android.request.availableColorSpaceProfiles">
+ <td class="entry_name
+ " rowspan="3">
+ android.<wbr/>request.<wbr/>available<wbr/>Color<wbr/>Space<wbr/>Profiles
+ </td>
+ <td class="entry_type">
+ <span class="entry_type_name">int32</span>
+
+ <span class="entry_type_visibility"> [java_public as colorSpaceProfiles]</span>
+
+ <span class="entry_type_synthetic">[synthetic] </span>
+
+
+
+
+
+ </td> <!-- entry_type -->
+
+ <td class="entry_description">
+ <p>An interface for querying the color space profiles supported by a camera device.<wbr/></p>
+ </td>
+
+ <td class="entry_units">
+ </td>
+
+ <td class="entry_range">
+ </td>
+
+ <td class="entry_hal_version">
+ <p>3.<wbr/>9</p>
+ </td>
+
+ <td class="entry_tags">
+ </td>
+
+ </tr>
+ <tr class="entries_header">
+ <th class="th_details" colspan="6">Details</th>
+ </tr>
+ <tr class="entry_cont">
+ <td class="entry_details" colspan="6">
+ <p>A color space profile is a combination of a color space,<wbr/> an image format,<wbr/> and a dynamic
+range profile.<wbr/> Camera clients can retrieve the list of supported color spaces by calling
+<a href="https://developer.android.com/reference/android/hardware/camera2/params/ColorSpaceProfiles.html#getSupportedColorSpaces">ColorSpaceProfiles#getSupportedColorSpaces</a> or
+<a href="https://developer.android.com/reference/android/hardware/camera2/params/ColorSpaceProfiles.html#getSupportedColorSpacesForDynamicRange">ColorSpaceProfiles#getSupportedColorSpacesForDynamicRange</a>.<wbr/>
+If a camera does not support the
+<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>TEN_<wbr/>BIT</a>
+capability,<wbr/> the dynamic range profile will always be
+<a href="https://developer.android.com/reference/android/hardware/camera2/params/DynamicRangeProfiles.html#STANDARD">DynamicRangeProfiles#STANDARD</a>.<wbr/> Color space
+capabilities are queried in combination with an <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html">ImageFormat</a>.<wbr/>
+If a camera client wants to know the general color space capabilities of a camera device
+regardless of image format,<wbr/> it can specify <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#UNKNOWN">ImageFormat#UNKNOWN</a>.<wbr/>
+The color space for a session can be configured by setting the SessionConfiguration
+color space via <a href="https://developer.android.com/reference/android/hardware/camera2/params/SessionConfiguration.html#setColorSpace">SessionConfiguration#setColorSpace</a>.<wbr/></p>
+ </td>
+ </tr>
+
+
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
+ <!-- end of entry -->
+
+
+ <tr class="entry" id="static_android.request.availableColorSpaceProfilesMap">
+ <td class="entry_name
+ " rowspan="5">
+ android.<wbr/>request.<wbr/>available<wbr/>Color<wbr/>Space<wbr/>Profiles<wbr/>Map
+ </td>
+ <td class="entry_type">
+ <span class="entry_type_name entry_type_name_enum">int64</span>
+ <span class="entry_type_container">x</span>
+
+ <span class="entry_type_array">
+ n x 3
+ </span>
+ <span class="entry_type_visibility"> [ndk_public]</span>
+
+
+
+
+
+ <ul class="entry_type_enum">
+ <li>
+ <span class="entry_type_enum_name">UNSPECIFIED (v3.9)</span>
+ <span class="entry_type_enum_value">-1</span>
+ <span class="entry_type_enum_notes"><p>Default value,<wbr/> when not explicitly specified.<wbr/> The Camera device will choose the color
+space to employ.<wbr/></p></span>
+ </li>
+ <li>
+ <span class="entry_type_enum_name">SRGB (v3.9)</span>
+ <span class="entry_type_enum_hidden">[system]</span>
+ <span class="entry_type_enum_value">0</span>
+ <span class="entry_type_enum_notes"><p>RGB color space sRGB standardized as IEC 61966-2.<wbr/>1:1999.<wbr/></p></span>
+ </li>
+ <li>
+ <span class="entry_type_enum_name">LINEAR_SRGB (v3.9)</span>
+ <span class="entry_type_enum_hidden">[system]</span>
+ <span class="entry_type_enum_value">1</span>
+ <span class="entry_type_enum_notes"><p>RGB color space sRGB standardized as IEC 61966-2.<wbr/>1:1999.<wbr/></p></span>
+ </li>
+ <li>
+ <span class="entry_type_enum_name">EXTENDED_SRGB (v3.9)</span>
+ <span class="entry_type_enum_hidden">[system]</span>
+ <span class="entry_type_enum_value">2</span>
+ <span class="entry_type_enum_notes"><p>RGB color space scRGB-nl standardized as IEC 61966-2-2:2003.<wbr/></p></span>
+ </li>
+ <li>
+ <span class="entry_type_enum_name">LINEAR_EXTENDED_SRGB (v3.9)</span>
+ <span class="entry_type_enum_hidden">[system]</span>
+ <span class="entry_type_enum_value">3</span>
+ <span class="entry_type_enum_notes"><p>RGB color space scRGB standardized as IEC 61966-2-2:2003.<wbr/></p></span>
+ </li>
+ <li>
+ <span class="entry_type_enum_name">BT709 (v3.9)</span>
+ <span class="entry_type_enum_hidden">[system]</span>
+ <span class="entry_type_enum_value">4</span>
+ <span class="entry_type_enum_notes"><p>RGB color space BT.<wbr/>709 standardized as Rec.<wbr/> ITU-R BT.<wbr/>709-5.<wbr/></p></span>
+ </li>
+ <li>
+ <span class="entry_type_enum_name">BT2020 (v3.9)</span>
+ <span class="entry_type_enum_hidden">[system]</span>
+ <span class="entry_type_enum_value">5</span>
+ <span class="entry_type_enum_notes"><p>RGB color space BT.<wbr/>2020 standardized as Rec.<wbr/> ITU-R BT.<wbr/>2020-1.<wbr/></p></span>
+ </li>
+ <li>
+ <span class="entry_type_enum_name">DCI_P3 (v3.9)</span>
+ <span class="entry_type_enum_hidden">[system]</span>
+ <span class="entry_type_enum_value">6</span>
+ <span class="entry_type_enum_notes"><p>RGB color space DCI-P3 standardized as SMPTE RP 431-2-2007.<wbr/></p></span>
+ </li>
+ <li>
+ <span class="entry_type_enum_name">DISPLAY_P3 (v3.9)</span>
+ <span class="entry_type_enum_hidden">[system]</span>
+ <span class="entry_type_enum_value">7</span>
+ <span class="entry_type_enum_notes"><p>RGB color space Display P3 based on SMPTE RP 431-2-2007 and IEC 61966-2.<wbr/>1:1999.<wbr/></p></span>
+ </li>
+ <li>
+ <span class="entry_type_enum_name">NTSC_1953 (v3.9)</span>
+ <span class="entry_type_enum_hidden">[system]</span>
+ <span class="entry_type_enum_value">8</span>
+ <span class="entry_type_enum_notes"><p>RGB color space NTSC,<wbr/> 1953 standard.<wbr/></p></span>
+ </li>
+ <li>
+ <span class="entry_type_enum_name">SMPTE_C (v3.9)</span>
+ <span class="entry_type_enum_hidden">[system]</span>
+ <span class="entry_type_enum_value">9</span>
+ <span class="entry_type_enum_notes"><p>RGB color space SMPTE C.<wbr/></p></span>
+ </li>
+ <li>
+ <span class="entry_type_enum_name">ADOBE_RGB (v3.9)</span>
+ <span class="entry_type_enum_hidden">[system]</span>
+ <span class="entry_type_enum_value">10</span>
+ <span class="entry_type_enum_notes"><p>RGB color space Adobe RGB (1998).<wbr/></p></span>
+ </li>
+ <li>
+ <span class="entry_type_enum_name">PRO_PHOTO_RGB (v3.9)</span>
+ <span class="entry_type_enum_hidden">[system]</span>
+ <span class="entry_type_enum_value">11</span>
+ <span class="entry_type_enum_notes"><p>RGB color space ProPhoto RGB standardized as ROMM RGB ISO 22028-2:2013.<wbr/></p></span>
+ </li>
+ <li>
+ <span class="entry_type_enum_name">ACES (v3.9)</span>
+ <span class="entry_type_enum_hidden">[system]</span>
+ <span class="entry_type_enum_value">12</span>
+ <span class="entry_type_enum_notes"><p>RGB color space ACES standardized as SMPTE ST 2065-1:2012.<wbr/></p></span>
+ </li>
+ <li>
+ <span class="entry_type_enum_name">ACESCG (v3.9)</span>
+ <span class="entry_type_enum_hidden">[system]</span>
+ <span class="entry_type_enum_value">13</span>
+ <span class="entry_type_enum_notes"><p>RGB color space ACEScg standardized as Academy S-2014-004.<wbr/></p></span>
+ </li>
+ <li>
+ <span class="entry_type_enum_name">CIE_XYZ (v3.9)</span>
+ <span class="entry_type_enum_hidden">[system]</span>
+ <span class="entry_type_enum_value">14</span>
+ <span class="entry_type_enum_notes"><p>XYZ color space CIE XYZ.<wbr/> This color space assumes standard illuminant D50 as its white
+point.<wbr/></p></span>
+ </li>
+ <li>
+ <span class="entry_type_enum_name">CIE_LAB (v3.9)</span>
+ <span class="entry_type_enum_hidden">[system]</span>
+ <span class="entry_type_enum_value">15</span>
+ <span class="entry_type_enum_notes"><p>Lab color space CIE L<em>a</em>b*.<wbr/> This color space uses CIE XYZ D50 as a profile conversion
+space.<wbr/></p></span>
+ </li>
+ </ul>
+
+ </td> <!-- entry_type -->
+
+ <td class="entry_description">
+ <p>A list of all possible color space profiles supported by a camera device.<wbr/></p>
+ </td>
+
+ <td class="entry_units">
+ </td>
+
+ <td class="entry_range">
+ </td>
+
+ <td class="entry_hal_version">
+ <p>3.<wbr/>9</p>
+ </td>
+
+ <td class="entry_tags">
+ </td>
+
+ </tr>
+ <tr class="entries_header">
+ <th class="th_details" colspan="6">Details</th>
+ </tr>
+ <tr class="entry_cont">
+ <td class="entry_details" colspan="6">
+ <p>A color space profile is a combination of a color space,<wbr/> an image format,<wbr/> and a dynamic range
+profile.<wbr/> If a camera does not support the
+<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>TEN_<wbr/>BIT</a>
+capability,<wbr/> the dynamic range profile will always be
+<a href="https://developer.android.com/reference/android/hardware/camera2/params/DynamicRangeProfiles.html#STANDARD">DynamicRangeProfiles#STANDARD</a>.<wbr/> Camera clients can
+use <a href="https://developer.android.com/reference/android/hardware/camera2/params/SessionConfiguration.html#setColorSpace">SessionConfiguration#setColorSpace</a> to select
+a color space.<wbr/></p>
+ </td>
+ </tr>
+
+ <tr class="entries_header">
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
+ </tr>
+ <tr class="entry_cont">
+ <td class="entry_details" colspan="6">
+ <p>The array contains three entries per supported profile:</p>
+<p>1) The supported color space.<wbr/>
+2) An image format which can be used with this color space.<wbr/>
+3) A bitmap of all compatible dynamic range profiles,<wbr/> if the device is HDR-capable.<wbr/></p>
+<p>The possible values for #1 are the positive values of the
+ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>COLOR_<wbr/>SPACE_<wbr/>PROFILES_<wbr/>MAP_<wbr/>* enum,<wbr/> which is equivalent to
+<a href="https://developer.android.com/reference/android/graphics/ColorSpace/Named.html">Named</a> and its ordinals.<wbr/> UNSPECIFIED should not be
+used here.<wbr/></p>
+<p>The possible values for #2 consist of the public-facing image/<wbr/>pixel formats,<wbr/> found at
+<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html">ImageFormat</a> and <a href="https://developer.android.com/reference/android/graphics/PixelFormat.html">PixelFormat</a>.<wbr/> Each map
+to a HAL pixel format except for <a href="https://developer.android.com/reference/android/graphics/ImageFormat/JPEG.html">JPEG</a>,<wbr/>
+<a href="https://developer.android.com/reference/android/graphics/ImageFormat/HEIC.html">HEIC</a>,<wbr/> and
+<a href="https://developer.android.com/reference/android/graphics/ImageFormat/DEPTH_JPEG.html">DEPTH_<wbr/>JPEG</a>.<wbr/> Depth formats besides DEPTH_<wbr/>JPEG are
+not applicable and should not be specified.<wbr/> If there are no constraints on the type of
+image format a color space is compatible with,<wbr/> this can be
+<a href="https://developer.android.com/reference/android/graphics/ImageFormat/UNKNOWN.html">UNKNOWN</a>.<wbr/></p>
+<p>If the device is not HDR-capable,<wbr/> #3 should always be
+ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>STANDARD.<wbr/> Otherwise,<wbr/> #3 should be a
+bitmap of the compatible ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>* values.<wbr/></p>
+<p>For devices that support P3 color,<wbr/> it is highly recommended to advertise
+<a href="https://developer.android.com/reference/android/graphics/ColorSpace/Named/DISPLAY_P3.html">DISPLAY_<wbr/>P3</a>
+unless the profile is specifically designed for playback in a theater environment
+(<a href="https://developer.android.com/reference/android/graphics/ColorSpace/Named/DCI_P3.html">DCI_<wbr/>P3</a>).<wbr/></p>
+ </td>
+ </tr>
+
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
+ <!-- end of entry -->
+
<!-- end of kind -->
diff --git a/camera/docs/metadata_definitions.xml b/camera/docs/metadata_definitions.xml
index 469206e..ab9a17d 100644
--- a/camera/docs/metadata_definitions.xml
+++ b/camera/docs/metadata_definitions.xml
@@ -152,6 +152,9 @@
<typedef name="dynamicRangeProfiles">
<language name="java">android.hardware.camera2.params.DynamicRangeProfiles</language>
</typedef>
+ <typedef name="colorSpaceProfiles">
+ <language name="java">android.hardware.camera2.params.ColorSpaceProfiles</language>
+ </typedef>
</types>
<namespace name="android">
@@ -6339,6 +6342,24 @@
via {@link android.hardware.camera2.params.MandatoryStreamCombination}.
</notes>
</value>
+ <value optional="true" visibility="java_public" hal_version="3.9">COLOR_SPACE_PROFILES
+ <notes>
+ The device supports querying the possible combinations of color spaces, image
+ formats, and dynamic range profiles supported by the camera and requesting a
+ particular color space for a session via
+ {@link android.hardware.camera2.params.SessionConfiguration#setColorSpace}.
+
+ Cameras that enable this capability may or may not also implement dynamic range
+ profiles. If they don't,
+ {@link android.hardware.camera2.params.ColorSpaceProfiles#getSupportedDynamicRangeProfiles}
+ will return only
+ {@link android.hardware.camera2.params.DynamicRangeProfiles#STANDARD} and
+ {@link android.hardware.camera2.params.ColorSpaceProfiles#getSupportedColorSpacesForDynamicRange}
+ will assume support of the
+ {@link android.hardware.camera2.params.DynamicRangeProfiles#STANDARD}
+ profile in all combinations of color spaces and image formats.
+ </notes>
+ </value>
</enum>
<description>List of capabilities that this camera device
advertises as fully supporting.</description>
@@ -6874,6 +6895,166 @@
{@link android.hardware.camera2.params.OutputConfiguration#setDynamicRangeProfile}.
</details>
</entry>
+ <entry name="availableColorSpaceProfiles" type="int32" visibility="java_public"
+ synthetic="true" optional="true" typedef="colorSpaceProfiles" hal_version="3.9">
+ <description>
+ An interface for querying the color space profiles supported by a camera device.
+ </description>
+ <details>
+ A color space profile is a combination of a color space, an image format, and a dynamic
+ range profile. Camera clients can retrieve the list of supported color spaces by calling
+ {@link android.hardware.camera2.params.ColorSpaceProfiles#getSupportedColorSpaces} or
+ {@link android.hardware.camera2.params.ColorSpaceProfiles#getSupportedColorSpacesForDynamicRange}.
+ If a camera does not support the
+ {@link android.hardware.camera2.CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT}
+ capability, the dynamic range profile will always be
+ {@link android.hardware.camera2.params.DynamicRangeProfiles#STANDARD}. Color space
+ capabilities are queried in combination with an {@link android.graphics.ImageFormat}.
+ If a camera client wants to know the general color space capabilities of a camera device
+ regardless of image format, it can specify {@link android.graphics.ImageFormat#UNKNOWN}.
+ The color space for a session can be configured by setting the SessionConfiguration
+ color space via {@link android.hardware.camera2.params.SessionConfiguration#setColorSpace}.
+ </details>
+ </entry>
+ <entry name="availableColorSpaceProfilesMap" type="int64" visibility="ndk_public"
+ optional="true" enum="true" container="array" hal_version="3.9">
+ <array>
+ <size>n</size>
+ <size>3</size>
+ </array>
+ <enum>
+ <value id="-1">UNSPECIFIED
+ <notes>
+ Default value, when not explicitly specified. The Camera device will choose the color
+ space to employ.
+ </notes>
+ </value>
+ <value visibility="system" id="0">SRGB
+ <notes>
+ RGB color space sRGB standardized as IEC 61966-2.1:1999.
+ </notes>
+ </value>
+ <value visibility="system" id="1">LINEAR_SRGB
+ <notes>
+ RGB color space sRGB standardized as IEC 61966-2.1:1999.
+ </notes>
+ </value>
+ <value visibility="system" id="2">EXTENDED_SRGB
+ <notes>
+ RGB color space scRGB-nl standardized as IEC 61966-2-2:2003.
+ </notes>
+ </value>
+ <value visibility="system" id="3">LINEAR_EXTENDED_SRGB
+ <notes>
+ RGB color space scRGB standardized as IEC 61966-2-2:2003.
+ </notes>
+ </value>
+ <value visibility="system" id="4">BT709
+ <notes>
+ RGB color space BT.709 standardized as Rec. ITU-R BT.709-5.
+ </notes>
+ </value>
+ <value visibility="system" id="5">BT2020
+ <notes>
+ RGB color space BT.2020 standardized as Rec. ITU-R BT.2020-1.
+ </notes>
+ </value>
+ <value visibility="system" id="6">DCI_P3
+ <notes>
+ RGB color space DCI-P3 standardized as SMPTE RP 431-2-2007.
+ </notes>
+ </value>
+ <value visibility="system" id="7">DISPLAY_P3
+ <notes>
+ RGB color space Display P3 based on SMPTE RP 431-2-2007 and IEC 61966-2.1:1999.
+ </notes>
+ </value>
+ <value visibility="system" id="8">NTSC_1953
+ <notes>
+ RGB color space NTSC, 1953 standard.
+ </notes>
+ </value>
+ <value visibility="system" id="9">SMPTE_C
+ <notes>
+ RGB color space SMPTE C.
+ </notes>
+ </value>
+ <value visibility="system" id="10">ADOBE_RGB
+ <notes>
+ RGB color space Adobe RGB (1998).
+ </notes>
+ </value>
+ <value visibility="system" id="11">PRO_PHOTO_RGB
+ <notes>
+ RGB color space ProPhoto RGB standardized as ROMM RGB ISO 22028-2:2013.
+ </notes>
+ </value>
+ <value visibility="system" id="12">ACES
+ <notes>
+ RGB color space ACES standardized as SMPTE ST 2065-1:2012.
+ </notes>
+ </value>
+ <value visibility="system" id="13">ACESCG
+ <notes>
+ RGB color space ACEScg standardized as Academy S-2014-004.
+ </notes>
+ </value>
+ <value visibility="system" id="14">CIE_XYZ
+ <notes>
+ XYZ color space CIE XYZ. This color space assumes standard illuminant D50 as its white
+ point.
+ </notes>
+ </value>
+ <value visibility="system" id="15">CIE_LAB
+ <notes>
+ Lab color space CIE L*a*b*. This color space uses CIE XYZ D50 as a profile conversion
+ space.
+ </notes>
+ </value>
+ </enum>
+ <description>
+ A list of all possible color space profiles supported by a camera device.
+ </description>
+ <details>
+ A color space profile is a combination of a color space, an image format, and a dynamic range
+ profile. If a camera does not support the
+ {@link android.hardware.camera2.CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT}
+ capability, the dynamic range profile will always be
+ {@link android.hardware.camera2.params.DynamicRangeProfiles#STANDARD}. Camera clients can
+ use {@link android.hardware.camera2.params.SessionConfiguration#setColorSpace} to select
+ a color space.
+ </details>
+ <hal_details>
+ The array contains three entries per supported profile:
+
+ 1) The supported color space.
+ 2) An image format which can be used with this color space.
+ 3) A bitmap of all compatible dynamic range profiles, if the device is HDR-capable.
+
+ The possible values for #1 are the positive values of the
+ ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_* enum, which is equivalent to
+ {@link android.graphics.ColorSpace.Named} and its ordinals. UNSPECIFIED should not be
+ used here.
+
+ The possible values for #2 consist of the public-facing image/pixel formats, found at
+ {@link android.graphics.ImageFormat} and {@link android.graphics.PixelFormat}. Each map
+ to a HAL pixel format except for {@link android.graphics.ImageFormat.JPEG},
+ {@link android.graphics.ImageFormat.HEIC}, and
+ {@link android.graphics.ImageFormat.DEPTH_JPEG}. Depth formats besides DEPTH_JPEG are
+ not applicable and should not be specified. If there are no constraints on the type of
+ image format a color space is compatible with, this can be
+ {@link android.graphics.ImageFormat.UNKNOWN}.
+
+ If the device is not HDR-capable, #3 should always be
+ ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_STANDARD. Otherwise, #3 should be a
+ bitmap of the compatible ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_* values.
+
+ For devices that support P3 color, it is highly recommended to advertise
+ {@link android.graphics.ColorSpace.Named.DISPLAY_P3}
+ unless the profile is specifically designed for playback in a theater environment
+ ({@link android.graphics.ColorSpace.Named.DCI_P3}).
+ </hal_details>
+ </entry>
</static>
</section>
<section name="scaler">
diff --git a/camera/docs/metadata_helpers.py b/camera/docs/metadata_helpers.py
index 33515ea..f3d52a6 100644
--- a/camera/docs/metadata_helpers.py
+++ b/camera/docs/metadata_helpers.py
@@ -188,6 +188,7 @@
"multiResolutionStreamConfigurationMap" : "MultiResolutionStreamConfigurations",
"deviceStateSensorOrientationMap" : "DeviceStateSensorOrientationMap",
"dynamicRangeProfiles" : "DynamicRangeProfiles",
+ "colorSpaceProfiles" : "ColorSpaceProfiles",
}
if typeName not in typename_to_protobuftype:
diff --git a/camera/include/system/camera_metadata_tags.h b/camera/include/system/camera_metadata_tags.h
index 8079d79..b298f84 100644
--- a/camera/include/system/camera_metadata_tags.h
+++ b/camera/include/system/camera_metadata_tags.h
@@ -308,6 +308,8 @@
// enum[] | ndk_public | HIDL v3.8
ANDROID_REQUEST_RECOMMENDED_TEN_BIT_DYNAMIC_RANGE_PROFILE,
// int64 | java_public | HIDL v3.8
+ ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP,
+ // enum[] | ndk_public | HIDL v3.9
ANDROID_REQUEST_END,
ANDROID_SCALER_CROP_REGION = // int32[] | public | HIDL v3.2
@@ -928,6 +930,7 @@
ANDROID_REQUEST_AVAILABLE_CAPABILITIES_REMOSAIC_REPROCESSING , // HIDL v3.6
ANDROID_REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT , // HIDL v3.8
ANDROID_REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE , // HIDL v3.8
+ ANDROID_REQUEST_AVAILABLE_CAPABILITIES_COLOR_SPACE_PROFILES , // HIDL v3.9
} camera_metadata_enum_android_request_available_capabilities_t;
// ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP
@@ -955,6 +958,28 @@
ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_MAX = 0x1000, // HIDL v3.8
} camera_metadata_enum_android_request_available_dynamic_range_profiles_map_t;
+// ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP
+typedef enum camera_metadata_enum_android_request_available_color_space_profiles_map {
+ ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_UNSPECIFIED = -1, // HIDL v3.9
+ ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_SRGB = 0, // HIDL v3.9
+ ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_LINEAR_SRGB = 1, // HIDL v3.9
+ ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_EXTENDED_SRGB = 2, // HIDL v3.9
+ ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_LINEAR_EXTENDED_SRGB
+ = 3, // HIDL v3.9
+ ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_BT709 = 4, // HIDL v3.9
+ ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_BT2020 = 5, // HIDL v3.9
+ ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_DCI_P3 = 6, // HIDL v3.9
+ ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_DISPLAY_P3 = 7, // HIDL v3.9
+ ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_NTSC_1953 = 8, // HIDL v3.9
+ ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_SMPTE_C = 9, // HIDL v3.9
+ ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_ADOBE_RGB = 10, // HIDL v3.9
+ ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_PRO_PHOTO_RGB = 11, // HIDL v3.9
+ ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_ACES = 12, // HIDL v3.9
+ ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_ACESCG = 13, // HIDL v3.9
+ ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_CIE_XYZ = 14, // HIDL v3.9
+ ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_CIE_LAB = 15, // HIDL v3.9
+} camera_metadata_enum_android_request_available_color_space_profiles_map_t;
+
// ANDROID_SCALER_AVAILABLE_FORMATS
typedef enum camera_metadata_enum_android_scaler_available_formats {
diff --git a/camera/src/camera_metadata_asserts.cpp b/camera/src/camera_metadata_asserts.cpp
index 599413a..2e23a9e 100644
--- a/camera/src/camera_metadata_asserts.cpp
+++ b/camera/src/camera_metadata_asserts.cpp
@@ -63,6 +63,7 @@
#include <aidl/android/hardware/camera/metadata/RequestType.h>
#include <aidl/android/hardware/camera/metadata/RequestAvailableCapabilities.h>
#include <aidl/android/hardware/camera/metadata/RequestAvailableDynamicRangeProfilesMap.h>
+#include <aidl/android/hardware/camera/metadata/RequestAvailableColorSpaceProfilesMap.h>
#include <aidl/android/hardware/camera/metadata/ScalerAvailableFormats.h>
#include <aidl/android/hardware/camera/metadata/ScalerAvailableStreamConfigurations.h>
#include <aidl/android/hardware/camera/metadata/ScalerCroppingType.h>
@@ -511,6 +512,8 @@
== static_cast<int>(::aidl::android::hardware::camera::metadata::CameraMetadataTag::ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP));
static_assert(static_cast<int>(ANDROID_REQUEST_RECOMMENDED_TEN_BIT_DYNAMIC_RANGE_PROFILE)
== static_cast<int>(::aidl::android::hardware::camera::metadata::CameraMetadataTag::ANDROID_REQUEST_RECOMMENDED_TEN_BIT_DYNAMIC_RANGE_PROFILE));
+static_assert(static_cast<int>(ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP)
+ == static_cast<int>(::aidl::android::hardware::camera::metadata::CameraMetadataTag::ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP));
static_assert(static_cast<int>(ANDROID_SCALER_CROP_REGION)
== static_cast<int>(::aidl::android::hardware::camera::metadata::CameraMetadataTag::ANDROID_SCALER_CROP_REGION));
static_assert(static_cast<int>(ANDROID_SCALER_AVAILABLE_FORMATS)
@@ -1226,6 +1229,8 @@
== static_cast<int32_t>(::aidl::android::hardware::camera::metadata::RequestAvailableCapabilities::ANDROID_REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT));
static_assert(static_cast<int32_t>(ANDROID_REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE)
== static_cast<int32_t>(::aidl::android::hardware::camera::metadata::RequestAvailableCapabilities::ANDROID_REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE));
+static_assert(static_cast<int32_t>(ANDROID_REQUEST_AVAILABLE_CAPABILITIES_COLOR_SPACE_PROFILES)
+ == static_cast<int32_t>(::aidl::android::hardware::camera::metadata::RequestAvailableCapabilities::ANDROID_REQUEST_AVAILABLE_CAPABILITIES_COLOR_SPACE_PROFILES));
static_assert(static_cast<int64_t>(ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_STANDARD)
== static_cast<int64_t>(::aidl::android::hardware::camera::metadata::RequestAvailableDynamicRangeProfilesMap::ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_STANDARD));
@@ -1254,6 +1259,41 @@
static_assert(static_cast<int64_t>(ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_MAX)
== static_cast<int64_t>(::aidl::android::hardware::camera::metadata::RequestAvailableDynamicRangeProfilesMap::ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_MAX));
+static_assert(static_cast<int64_t>(ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_UNSPECIFIED)
+ == static_cast<int64_t>(::aidl::android::hardware::camera::metadata::RequestAvailableColorSpaceProfilesMap::ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_UNSPECIFIED));
+static_assert(static_cast<int64_t>(ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_SRGB)
+ == static_cast<int64_t>(::aidl::android::hardware::camera::metadata::RequestAvailableColorSpaceProfilesMap::ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_SRGB));
+static_assert(static_cast<int64_t>(ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_LINEAR_SRGB)
+ == static_cast<int64_t>(::aidl::android::hardware::camera::metadata::RequestAvailableColorSpaceProfilesMap::ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_LINEAR_SRGB));
+static_assert(static_cast<int64_t>(ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_EXTENDED_SRGB)
+ == static_cast<int64_t>(::aidl::android::hardware::camera::metadata::RequestAvailableColorSpaceProfilesMap::ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_EXTENDED_SRGB));
+static_assert(static_cast<int64_t>(ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_LINEAR_EXTENDED_SRGB)
+ == static_cast<int64_t>(::aidl::android::hardware::camera::metadata::RequestAvailableColorSpaceProfilesMap::ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_LINEAR_EXTENDED_SRGB));
+static_assert(static_cast<int64_t>(ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_BT709)
+ == static_cast<int64_t>(::aidl::android::hardware::camera::metadata::RequestAvailableColorSpaceProfilesMap::ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_BT709));
+static_assert(static_cast<int64_t>(ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_BT2020)
+ == static_cast<int64_t>(::aidl::android::hardware::camera::metadata::RequestAvailableColorSpaceProfilesMap::ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_BT2020));
+static_assert(static_cast<int64_t>(ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_DCI_P3)
+ == static_cast<int64_t>(::aidl::android::hardware::camera::metadata::RequestAvailableColorSpaceProfilesMap::ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_DCI_P3));
+static_assert(static_cast<int64_t>(ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_DISPLAY_P3)
+ == static_cast<int64_t>(::aidl::android::hardware::camera::metadata::RequestAvailableColorSpaceProfilesMap::ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_DISPLAY_P3));
+static_assert(static_cast<int64_t>(ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_NTSC_1953)
+ == static_cast<int64_t>(::aidl::android::hardware::camera::metadata::RequestAvailableColorSpaceProfilesMap::ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_NTSC_1953));
+static_assert(static_cast<int64_t>(ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_SMPTE_C)
+ == static_cast<int64_t>(::aidl::android::hardware::camera::metadata::RequestAvailableColorSpaceProfilesMap::ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_SMPTE_C));
+static_assert(static_cast<int64_t>(ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_ADOBE_RGB)
+ == static_cast<int64_t>(::aidl::android::hardware::camera::metadata::RequestAvailableColorSpaceProfilesMap::ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_ADOBE_RGB));
+static_assert(static_cast<int64_t>(ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_PRO_PHOTO_RGB)
+ == static_cast<int64_t>(::aidl::android::hardware::camera::metadata::RequestAvailableColorSpaceProfilesMap::ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_PRO_PHOTO_RGB));
+static_assert(static_cast<int64_t>(ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_ACES)
+ == static_cast<int64_t>(::aidl::android::hardware::camera::metadata::RequestAvailableColorSpaceProfilesMap::ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_ACES));
+static_assert(static_cast<int64_t>(ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_ACESCG)
+ == static_cast<int64_t>(::aidl::android::hardware::camera::metadata::RequestAvailableColorSpaceProfilesMap::ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_ACESCG));
+static_assert(static_cast<int64_t>(ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_CIE_XYZ)
+ == static_cast<int64_t>(::aidl::android::hardware::camera::metadata::RequestAvailableColorSpaceProfilesMap::ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_CIE_XYZ));
+static_assert(static_cast<int64_t>(ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_CIE_LAB)
+ == static_cast<int64_t>(::aidl::android::hardware::camera::metadata::RequestAvailableColorSpaceProfilesMap::ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_CIE_LAB));
+
static_assert(static_cast<int32_t>(ANDROID_SCALER_AVAILABLE_FORMATS_RAW16)
== static_cast<int32_t>(::aidl::android::hardware::camera::metadata::ScalerAvailableFormats::ANDROID_SCALER_AVAILABLE_FORMATS_RAW16));
static_assert(static_cast<int32_t>(ANDROID_SCALER_AVAILABLE_FORMATS_RAW_OPAQUE)
diff --git a/camera/src/camera_metadata_tag_info.c b/camera/src/camera_metadata_tag_info.c
index 1ca265a..f56290e 100644
--- a/camera/src/camera_metadata_tag_info.c
+++ b/camera/src/camera_metadata_tag_info.c
@@ -468,6 +468,9 @@
[ ANDROID_REQUEST_RECOMMENDED_TEN_BIT_DYNAMIC_RANGE_PROFILE - ANDROID_REQUEST_START ] =
{ "recommendedTenBitDynamicRangeProfile",
TYPE_INT64 },
+ [ ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP - ANDROID_REQUEST_START ] =
+ { "availableColorSpaceProfilesMap",
+ TYPE_INT64 },
};
static tag_info_t android_scaler[ANDROID_SCALER_END -
@@ -2277,6 +2280,10 @@
msg = "STREAM_USE_CASE";
ret = 0;
break;
+ case ANDROID_REQUEST_AVAILABLE_CAPABILITIES_COLOR_SPACE_PROFILES:
+ msg = "COLOR_SPACE_PROFILES";
+ ret = 0;
+ break;
default:
msg = "error: enum value out of range";
}
@@ -2362,6 +2369,81 @@
case ANDROID_REQUEST_RECOMMENDED_TEN_BIT_DYNAMIC_RANGE_PROFILE: {
break;
}
+ case ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP: {
+ switch (value) {
+ case ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_UNSPECIFIED:
+ msg = "UNSPECIFIED";
+ ret = 0;
+ break;
+ case ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_SRGB:
+ msg = "SRGB";
+ ret = 0;
+ break;
+ case ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_LINEAR_SRGB:
+ msg = "LINEAR_SRGB";
+ ret = 0;
+ break;
+ case ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_EXTENDED_SRGB:
+ msg = "EXTENDED_SRGB";
+ ret = 0;
+ break;
+ case ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_LINEAR_EXTENDED_SRGB:
+ msg = "LINEAR_EXTENDED_SRGB";
+ ret = 0;
+ break;
+ case ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_BT709:
+ msg = "BT709";
+ ret = 0;
+ break;
+ case ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_BT2020:
+ msg = "BT2020";
+ ret = 0;
+ break;
+ case ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_DCI_P3:
+ msg = "DCI_P3";
+ ret = 0;
+ break;
+ case ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_DISPLAY_P3:
+ msg = "DISPLAY_P3";
+ ret = 0;
+ break;
+ case ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_NTSC_1953:
+ msg = "NTSC_1953";
+ ret = 0;
+ break;
+ case ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_SMPTE_C:
+ msg = "SMPTE_C";
+ ret = 0;
+ break;
+ case ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_ADOBE_RGB:
+ msg = "ADOBE_RGB";
+ ret = 0;
+ break;
+ case ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_PRO_PHOTO_RGB:
+ msg = "PRO_PHOTO_RGB";
+ ret = 0;
+ break;
+ case ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_ACES:
+ msg = "ACES";
+ ret = 0;
+ break;
+ case ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_ACESCG:
+ msg = "ACESCG";
+ ret = 0;
+ break;
+ case ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_CIE_XYZ:
+ msg = "CIE_XYZ";
+ ret = 0;
+ break;
+ case ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_CIE_LAB:
+ msg = "CIE_LAB";
+ ret = 0;
+ break;
+ default:
+ msg = "error: enum value out of range";
+ }
+ break;
+ }
case ANDROID_SCALER_CROP_REGION: {
break;
@@ -5287,6 +5369,12 @@
ret = 0;
break;
}
+ enumName = "COLOR_SPACE_PROFILES";
+ if (strncmp(name, enumName, size) == 0) {
+ *value = ANDROID_REQUEST_AVAILABLE_CAPABILITIES_COLOR_SPACE_PROFILES;
+ ret = 0;
+ break;
+ }
break;
}
case ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS: {
@@ -5391,6 +5479,111 @@
case ANDROID_REQUEST_RECOMMENDED_TEN_BIT_DYNAMIC_RANGE_PROFILE: {
break;
}
+ case ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP: {
+ enumName = "UNSPECIFIED";
+ if (strncmp(name, enumName, size) == 0) {
+ *value = ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_UNSPECIFIED;
+ ret = 0;
+ break;
+ }
+ enumName = "SRGB";
+ if (strncmp(name, enumName, size) == 0) {
+ *value = ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_SRGB;
+ ret = 0;
+ break;
+ }
+ enumName = "LINEAR_SRGB";
+ if (strncmp(name, enumName, size) == 0) {
+ *value = ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_LINEAR_SRGB;
+ ret = 0;
+ break;
+ }
+ enumName = "EXTENDED_SRGB";
+ if (strncmp(name, enumName, size) == 0) {
+ *value = ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_EXTENDED_SRGB;
+ ret = 0;
+ break;
+ }
+ enumName = "LINEAR_EXTENDED_SRGB";
+ if (strncmp(name, enumName, size) == 0) {
+ *value = ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_LINEAR_EXTENDED_SRGB;
+ ret = 0;
+ break;
+ }
+ enumName = "BT709";
+ if (strncmp(name, enumName, size) == 0) {
+ *value = ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_BT709;
+ ret = 0;
+ break;
+ }
+ enumName = "BT2020";
+ if (strncmp(name, enumName, size) == 0) {
+ *value = ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_BT2020;
+ ret = 0;
+ break;
+ }
+ enumName = "DCI_P3";
+ if (strncmp(name, enumName, size) == 0) {
+ *value = ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_DCI_P3;
+ ret = 0;
+ break;
+ }
+ enumName = "DISPLAY_P3";
+ if (strncmp(name, enumName, size) == 0) {
+ *value = ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_DISPLAY_P3;
+ ret = 0;
+ break;
+ }
+ enumName = "NTSC_1953";
+ if (strncmp(name, enumName, size) == 0) {
+ *value = ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_NTSC_1953;
+ ret = 0;
+ break;
+ }
+ enumName = "SMPTE_C";
+ if (strncmp(name, enumName, size) == 0) {
+ *value = ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_SMPTE_C;
+ ret = 0;
+ break;
+ }
+ enumName = "ADOBE_RGB";
+ if (strncmp(name, enumName, size) == 0) {
+ *value = ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_ADOBE_RGB;
+ ret = 0;
+ break;
+ }
+ enumName = "PRO_PHOTO_RGB";
+ if (strncmp(name, enumName, size) == 0) {
+ *value = ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_PRO_PHOTO_RGB;
+ ret = 0;
+ break;
+ }
+ enumName = "ACES";
+ if (strncmp(name, enumName, size) == 0) {
+ *value = ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_ACES;
+ ret = 0;
+ break;
+ }
+ enumName = "ACESCG";
+ if (strncmp(name, enumName, size) == 0) {
+ *value = ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_ACESCG;
+ ret = 0;
+ break;
+ }
+ enumName = "CIE_XYZ";
+ if (strncmp(name, enumName, size) == 0) {
+ *value = ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_CIE_XYZ;
+ ret = 0;
+ break;
+ }
+ enumName = "CIE_LAB";
+ if (strncmp(name, enumName, size) == 0) {
+ *value = ANDROID_REQUEST_AVAILABLE_COLOR_SPACE_PROFILES_MAP_CIE_LAB;
+ ret = 0;
+ break;
+ }
+ break;
+ }
case ANDROID_SCALER_CROP_REGION: {
break;