Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(519)

Side by Side Diff: third_party/WebKit/Source/platform/testing/ImageDecodeBench.cpp

Issue 2605743002: Use consistent types for ICC profiles (Closed)
Patch Set: No export for static lib Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Provides a minimal wrapping of the Blink image decoders. Used to perform 5 // Provides a minimal wrapping of the Blink image decoders. Used to perform
6 // a non-threaded, memory-to-memory image decode using micro second accuracy 6 // a non-threaded, memory-to-memory image decode using micro second accuracy
7 // clocks to measure image decode time. Optionally applies color correction 7 // clocks to measure image decode time. Optionally applies color correction
8 // during image decoding on supported platforms (default off). Usage: 8 // during image decoding on supported platforms (default off). Usage:
9 // 9 //
10 // % ninja -C out/Release image_decode_bench && 10 // % ninja -C out/Release image_decode_bench &&
11 // ./out/Release/image_decode_bench file [iterations] 11 // ./out/Release/image_decode_bench file [iterations]
12 // 12 //
13 // TODO(noel): Consider adding md5 checksum support to WTF. Use it to compute 13 // TODO(noel): Consider adding md5 checksum support to WTF. Use it to compute
14 // the decoded image frame md5 and output that value. 14 // the decoded image frame md5 and output that value.
15 // 15 //
16 // TODO(noel): Consider integrating this tool in Chrome telemetry for realz, 16 // TODO(noel): Consider integrating this tool in Chrome telemetry for realz,
17 // using the image corpii used to assess Blink image decode performance. Refer 17 // using the image corpii used to assess Blink image decode performance. Refer
18 // to http://crbug.com/398235#c103 and http://crbug.com/258324#c5 18 // to http://crbug.com/398235#c103 and http://crbug.com/258324#c5
19 19
20 #include "base/command_line.h" 20 #include "base/command_line.h"
21 #include "platform/SharedBuffer.h" 21 #include "platform/SharedBuffer.h"
22 #include "platform/image-decoders/ImageDecoder.h" 22 #include "platform/image-decoders/ImageDecoder.h"
23 #include "public/platform/Platform.h" 23 #include "public/platform/Platform.h"
24 #include "ui/gfx/test/icc_profiles.h"
24 #include "wtf/PassRefPtr.h" 25 #include "wtf/PassRefPtr.h"
25 #include "wtf/PtrUtil.h" 26 #include "wtf/PtrUtil.h"
26 #include <memory> 27 #include <memory>
27 28
28 #if defined(_WIN32) 29 #if defined(_WIN32)
29 #include <mmsystem.h> 30 #include <mmsystem.h>
30 #include <sys/stat.h> 31 #include <sys/stat.h>
31 #include <time.h> 32 #include <time.h>
32 #define stat(x, y) _stat(x, y) 33 #define stat(x, y) _stat(x, y)
33 typedef struct _stat sttype; 34 typedef struct _stat sttype;
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 #else 169 #else
169 170
170 static double getCurrentTime() { 171 static double getCurrentTime() {
171 struct timeval now; 172 struct timeval now;
172 gettimeofday(&now, 0); 173 gettimeofday(&now, 0);
173 return now.tv_sec + now.tv_usec * (1.0 / 1000000.0); 174 return now.tv_sec + now.tv_usec * (1.0 / 1000000.0);
174 } 175 }
175 176
176 #endif 177 #endif
177 178
178 void getScreenColorProfile(WebVector<char>* profile) {
179 static unsigned char profileData[] = {
180 0x00, 0x00, 0x01, 0xea, 0x54, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00,
181 0x6d, 0x6e, 0x74, 0x72, 0x52, 0x47, 0x42, 0x20, 0x58, 0x59, 0x5a, 0x20,
182 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
183 0x61, 0x63, 0x73, 0x70, 0x74, 0x65, 0x73, 0x74, 0x00, 0x00, 0x00, 0x00,
184 0x74, 0x65, 0x73, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
185 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xd6,
186 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd3, 0x2d, 0x74, 0x65, 0x73, 0x74,
187 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
188 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
189 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
190 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09,
191 0x63, 0x70, 0x72, 0x74, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x0d,
192 0x64, 0x65, 0x73, 0x63, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x8c,
193 0x77, 0x74, 0x70, 0x74, 0x00, 0x00, 0x01, 0x8c, 0x00, 0x00, 0x00, 0x14,
194 0x72, 0x58, 0x59, 0x5a, 0x00, 0x00, 0x01, 0xa0, 0x00, 0x00, 0x00, 0x14,
195 0x67, 0x58, 0x59, 0x5a, 0x00, 0x00, 0x01, 0xb4, 0x00, 0x00, 0x00, 0x14,
196 0x62, 0x58, 0x59, 0x5a, 0x00, 0x00, 0x01, 0xc8, 0x00, 0x00, 0x00, 0x14,
197 0x72, 0x54, 0x52, 0x43, 0x00, 0x00, 0x01, 0xdc, 0x00, 0x00, 0x00, 0x0e,
198 0x67, 0x54, 0x52, 0x43, 0x00, 0x00, 0x01, 0xdc, 0x00, 0x00, 0x00, 0x0e,
199 0x62, 0x54, 0x52, 0x43, 0x00, 0x00, 0x01, 0xdc, 0x00, 0x00, 0x00, 0x0e,
200 0x74, 0x65, 0x78, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
201 0x00, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x63, 0x00, 0x00, 0x00, 0x00,
202 0x00, 0x00, 0x00, 0x10, 0x77, 0x68, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x2e,
203 0x69, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
204 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
205 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
206 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
207 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
208 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
209 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
210 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
211 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
212 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
213 0x58, 0x59, 0x5a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x52,
214 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x16, 0xcc, 0x58, 0x59, 0x5a, 0x20,
215 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x8d, 0x00, 0x00, 0xa0, 0x2c,
216 0x00, 0x00, 0x0f, 0x95, 0x58, 0x59, 0x5a, 0x20, 0x00, 0x00, 0x00, 0x00,
217 0x00, 0x00, 0x26, 0x31, 0x00, 0x00, 0x10, 0x2f, 0x00, 0x00, 0xbe, 0x9b,
218 0x58, 0x59, 0x5a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x18,
219 0x00, 0x00, 0x4f, 0xa5, 0x00, 0x00, 0x04, 0xfc, 0x63, 0x75, 0x72, 0x76,
220 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x33};
221
222 static struct WhackedColorProfile {
223 char* data() { return reinterpret_cast<char*>(profileData); }
224
225 const size_t profileSize = 490u;
226
227 size_t size() { return profileSize; }
228
229 } screenProfile;
230
231 profile->assign(screenProfile.data(), screenProfile.size());
232 }
233
234 PassRefPtr<SharedBuffer> readFile(const char* fileName) { 179 PassRefPtr<SharedBuffer> readFile(const char* fileName) {
235 FILE* fp = fopen(fileName, "rb"); 180 FILE* fp = fopen(fileName, "rb");
236 if (!fp) { 181 if (!fp) {
237 fprintf(stderr, "Can't open file %s\n", fileName); 182 fprintf(stderr, "Can't open file %s\n", fileName);
238 exit(2); 183 exit(2);
239 } 184 }
240 185
241 sttype s; 186 sttype s;
242 stat(fileName, &s); 187 stat(fileName, &s);
243 size_t fileSize = s.st_size; 188 size_t fileSize = s.st_size;
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 248
304 int main(int argc, char* argv[]) { 249 int main(int argc, char* argv[]) {
305 base::CommandLine::Init(argc, argv); 250 base::CommandLine::Init(argc, argv);
306 251
307 // If the platform supports color correction, allow it to be controlled. 252 // If the platform supports color correction, allow it to be controlled.
308 253
309 bool applyColorCorrection = false; 254 bool applyColorCorrection = false;
310 255
311 if (argc >= 2 && strcmp(argv[1], "--color-correct") == 0) { 256 if (argc >= 2 && strcmp(argv[1], "--color-correct") == 0) {
312 applyColorCorrection = (--argc, ++argv, true); 257 applyColorCorrection = (--argc, ++argv, true);
313 WebVector<char> profile; 258 gfx::ICCProfile iccProfile = gfx::ICCProfileForTestingColorSpin();
314 getScreenColorProfile(&profile); // Returns a color spin color profile. 259 ColorBehavior::setGlobalTargetColorSpace(
315 ColorBehavior::setGlobalTargetColorProfile(profile); 260 iccProfile.GetColorSpace().ToSkColorSpace());
316 } 261 }
317 262
318 if (argc < 2) { 263 if (argc < 2) {
319 fprintf(stderr, 264 fprintf(stderr,
320 "Usage: %s [--color-correct] file [iterations] [packetSize]\n", 265 "Usage: %s [--color-correct] file [iterations] [packetSize]\n",
321 argv[0]); 266 argv[0]);
322 exit(1); 267 exit(1);
323 } 268 }
324 269
325 // Control decode bench iterations and packet size. 270 // Control decode bench iterations and packet size.
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 exit(3); 336 exit(3);
392 } 337 }
393 } 338 }
394 339
395 // Results to stdout. 340 // Results to stdout.
396 341
397 double averageTime = totalTime / static_cast<double>(iterations); 342 double averageTime = totalTime / static_cast<double>(iterations);
398 printf("%f %f\n", totalTime, averageTime); 343 printf("%f %f\n", totalTime, averageTime);
399 return 0; 344 return 0;
400 } 345 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698