• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2017 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #include <ui/DebugUtils.h>
18 
19 #include <android-base/stringprintf.h>
20 #include <string>
21 
decodeStandard(android_dataspace dataspace)22 std::string decodeStandard(android_dataspace dataspace) {
23     const uint32_t dataspaceSelect = (dataspace & HAL_DATASPACE_STANDARD_MASK);
24     switch (dataspaceSelect) {
25         case HAL_DATASPACE_STANDARD_BT709:
26             return std::string("BT709");
27 
28         case HAL_DATASPACE_STANDARD_BT601_625:
29             return std::string("BT601_625");
30 
31         case HAL_DATASPACE_STANDARD_BT601_625_UNADJUSTED:
32             return std::string("BT601_625_UNADJUSTED");
33 
34         case HAL_DATASPACE_STANDARD_BT601_525:
35             return std::string("BT601_525");
36 
37         case HAL_DATASPACE_STANDARD_BT601_525_UNADJUSTED:
38             return std::string("BT601_525_UNADJUSTED");
39 
40         case HAL_DATASPACE_STANDARD_BT2020:
41             return std::string("BT2020");
42 
43         case HAL_DATASPACE_STANDARD_BT2020_CONSTANT_LUMINANCE:
44             return std::string("BT2020 (constant luminance)");
45 
46         case HAL_DATASPACE_STANDARD_BT470M:
47             return std::string("BT470M");
48 
49         case HAL_DATASPACE_STANDARD_FILM:
50             return std::string("FILM");
51 
52         case HAL_DATASPACE_STANDARD_DCI_P3:
53             return std::string("DCI-P3");
54 
55         case HAL_DATASPACE_STANDARD_ADOBE_RGB:
56             return std::string("AdobeRGB");
57 
58         case 0:
59             switch (dataspace & 0xffff) {
60                 case HAL_DATASPACE_JFIF:
61                     return std::string("(deprecated) JFIF (BT601_625, SMPTE_170M Full range)");
62 
63                 case HAL_DATASPACE_BT601_625:
64                     return std::string("(deprecated) BT601_625 (BT601_625, SMPTE_170M Limited "
65                                        "range)");
66 
67                 case HAL_DATASPACE_BT601_525:
68                     return std::string("(deprecated) BT601_525 (BT601_525, SMPTE_170M Limited "
69                                        "range)");
70 
71                 case HAL_DATASPACE_SRGB_LINEAR:
72                     return std::string("(deprecated) SRGB Linear Full range");
73 
74                 case HAL_DATASPACE_SRGB:
75                     return std::string("(deprecated) sRGB");
76 
77                 case HAL_DATASPACE_V0_BT709:
78                     return std::string("(deprecated) BT709 (BT709, SMPTE_170M Limited range)");
79 
80                 case HAL_DATASPACE_ARBITRARY:
81                     return std::string("ARBITRARY");
82 
83                 case HAL_DATASPACE_UNKNOWN:
84                 // Fallthrough
85                 default:
86                     return android::base::StringPrintf("Unknown deprecated dataspace code %d",
87                                                        dataspaceSelect);
88             }
89     }
90 
91     return android::base::StringPrintf("Unknown dataspace code %d", dataspaceSelect);
92 }
93 
decodeTransfer(android_dataspace dataspace)94 std::string decodeTransfer(android_dataspace dataspace) {
95     const uint32_t dataspaceTransfer = (dataspace & HAL_DATASPACE_TRANSFER_MASK);
96     switch (dataspaceTransfer) {
97         case HAL_DATASPACE_TRANSFER_UNSPECIFIED:
98             return std::string("Unspecified");
99 
100         case HAL_DATASPACE_TRANSFER_LINEAR:
101             return std::string("Linear");
102 
103         case HAL_DATASPACE_TRANSFER_SRGB:
104             return std::string("sRGB");
105 
106         case HAL_DATASPACE_TRANSFER_SMPTE_170M:
107             return std::string("SMPTE_170M");
108 
109         case HAL_DATASPACE_TRANSFER_GAMMA2_2:
110             return std::string("gamma 2.2");
111 
112         case HAL_DATASPACE_TRANSFER_GAMMA2_6:
113             return std::string("gamma 2.6");
114 
115         case HAL_DATASPACE_TRANSFER_GAMMA2_8:
116             return std::string("gamma 2.8");
117 
118         case HAL_DATASPACE_TRANSFER_ST2084:
119             return std::string("SMPTE 2084");
120 
121         case HAL_DATASPACE_TRANSFER_HLG:
122             return std::string("STD-B67");
123     }
124 
125     return android::base::StringPrintf("Unknown dataspace transfer %d", dataspaceTransfer);
126 }
127 
decodeRange(android_dataspace dataspace)128 std::string decodeRange(android_dataspace dataspace) {
129     const uint32_t dataspaceRange = (dataspace & HAL_DATASPACE_RANGE_MASK);
130     switch (dataspaceRange) {
131         case HAL_DATASPACE_RANGE_UNSPECIFIED:
132             return std::string("Range Unspecified");
133 
134         case HAL_DATASPACE_RANGE_FULL:
135             return std::string("Full range");
136 
137         case HAL_DATASPACE_RANGE_LIMITED:
138             return std::string("Limited range");
139 
140         case HAL_DATASPACE_RANGE_EXTENDED:
141             return std::string("Extended range");
142     }
143 
144     return android::base::StringPrintf("Unknown dataspace range %d", dataspaceRange);
145 }
146 
dataspaceDetails(android_dataspace dataspace)147 std::string dataspaceDetails(android_dataspace dataspace) {
148     return android::base::StringPrintf("%s %s %s", decodeStandard(dataspace).c_str(),
149                                        decodeTransfer(dataspace).c_str(),
150                                        decodeRange(dataspace).c_str());
151 }
152 
decodeColorMode(android_color_mode colorMode)153 std::string decodeColorMode(android_color_mode colorMode) {
154     switch (colorMode) {
155         case HAL_COLOR_MODE_NATIVE:
156             return std::string("HAL_COLOR_MODE_NATIVE");
157 
158         case HAL_COLOR_MODE_STANDARD_BT601_625:
159             return std::string("HAL_COLOR_MODE_BT601_625");
160 
161         case HAL_COLOR_MODE_STANDARD_BT601_625_UNADJUSTED:
162             return std::string("HAL_COLOR_MODE_BT601_625_UNADJUSTED");
163 
164         case HAL_COLOR_MODE_STANDARD_BT601_525:
165             return std::string("HAL_COLOR_MODE_BT601_525");
166 
167         case HAL_COLOR_MODE_STANDARD_BT601_525_UNADJUSTED:
168             return std::string("HAL_COLOR_MODE_BT601_525_UNADJUSTED");
169 
170         case HAL_COLOR_MODE_STANDARD_BT709:
171             return std::string("HAL_COLOR_MODE_BT709");
172 
173         case HAL_COLOR_MODE_DCI_P3:
174             return std::string("HAL_COLOR_MODE_DCI_P3");
175 
176         case HAL_COLOR_MODE_SRGB:
177             return std::string("HAL_COLOR_MODE_SRGB");
178 
179         case HAL_COLOR_MODE_ADOBE_RGB:
180             return std::string("HAL_COLOR_MODE_ADOBE_RGB");
181 
182         case HAL_COLOR_MODE_DISPLAY_P3:
183             return std::string("HAL_COLOR_MODE_DISPLAY_P3");
184     }
185 
186     return android::base::StringPrintf("Unknown color mode %d", colorMode);
187 }
188