blob: 882bd7c7b20f25d31898cda1999e60b804090ccc [file] [log] [blame]
Courtney Goeltzenleuchtere06ad182017-03-22 13:09:12 -06001/*
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
22std::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
94std::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
128std::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
147std::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
153std::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}