OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 function getConstraintsForDevice(deviceLabel) { | 5 function getConstraintsForDevice(deviceLabel) { |
6 return new Promise(function(resolve, reject) { | 6 return new Promise(function(resolve, reject) { |
7 navigator.mediaDevices.enumerateDevices() | 7 navigator.mediaDevices.enumerateDevices() |
8 .then(function(devices) { | 8 .then(function(devices) { |
9 for (var i = 0; i < devices.length; ++i) { | 9 for (var i = 0; i < devices.length; ++i) { |
10 if (deviceLabel == devices[i].label) { | 10 if (deviceLabel == devices[i].label) { |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
47 // (top_left_value + (row + column) * step) % wrap_around. wrap_around is 255 | 47 // (top_left_value + (row + column) * step) % wrap_around. wrap_around is 255 |
48 // (for Uint8) or 1.0 for float. See FakeVideoCaptureDevice for details. | 48 // (for Uint8) or 1.0 for float. See FakeVideoCaptureDevice for details. |
49 function verifyPixels( | 49 function verifyPixels( |
50 data, width, height, flip_y, step, wrap_around, tolerance, test_name) { | 50 data, width, height, flip_y, step, wrap_around, tolerance, test_name) { |
51 var rowsColumnsToCheck = [[1, 1], | 51 var rowsColumnsToCheck = [[1, 1], |
52 [0, width - 1], | 52 [0, width - 1], |
53 [height - 1, 0], | 53 [height - 1, 0], |
54 [height - 1, width - 1], | 54 [height - 1, width - 1], |
55 [height - 3, width - 3]]; | 55 [height - 3, width - 3]]; |
56 | 56 |
57 // Same value is expected for all color components. | |
58 if (data[0] != data[1] || data[0] != data[2]) { | |
59 return Promise.reject(test_name + ": values " + data[0] + ", " + data[1] + | |
60 ", " + data[2] + " differ at top left."); | |
61 } | |
62 | |
63 // Calculate all reference points based on top left and compare. | 57 // Calculate all reference points based on top left and compare. |
64 for (var j = 0; j < rowsColumnsToCheck.length; ++j) { | 58 for (var j = 0; j < rowsColumnsToCheck.length; ++j) { |
65 var row = rowsColumnsToCheck[j][0]; | 59 var row = rowsColumnsToCheck[j][0]; |
66 var column = rowsColumnsToCheck[j][1]; | 60 var column = rowsColumnsToCheck[j][1]; |
67 var i = (width * row + column) * 4; | 61 var i = (width * row + column) * 4; |
68 if (data[i] != data[i + 1] || data[i] != data[i + 2]) { | |
69 return Promise.reject(test_name + ": values " + data[i] + ", " + | |
70 data[i + 1] + ", " + data[i + 2] + | |
71 " differ at index " + i); | |
72 } | |
73 var calculated = (data[0] + wrap_around + | 62 var calculated = (data[0] + wrap_around + |
74 step * ((flip_y ? -row : row) + column)) % wrap_around; | 63 step * ((flip_y ? -row : row) + column)) % wrap_around; |
75 if (Math.abs(calculated - data[i]) > tolerance) { | 64 if (Math.abs(calculated - data[i]) > tolerance) { |
76 return Promise.reject(test_name + ": reference value " + data[i] + | 65 return Promise.reject(test_name + ": reference value " + data[i] + |
77 " differs from calculated: " + calculated + | 66 " differs from calculated: " + calculated + |
78 " at index (row, column) " + i + " (" + row + ", " + column + | 67 " at index (row, column) " + i + " (" + row + ", " + column + |
79 "). TopLeft value:" + data[0] + ", step:" + step + ", flip_y:" + | 68 "). TopLeft value:" + data[0] + ", step:" + step + ", flip_y:" + |
80 flip_y); | 69 flip_y); |
81 } | 70 } |
82 } | 71 } |
83 return true; | 72 return true; |
84 } | 73 } |
85 | |
86 // Although RED texture is bound to framebuffer, we read RGBA pixels to |data|. | |
87 // Value at point (row, column) is calculated as | |
88 // (top_left_value + (row + column) * step) % wrap_around. wrap_around is 255 | |
89 // (for Uint8) or 1.0 for float. See FakeVideoCaptureDevice for details. | |
90 function verifyPixelsRed( | |
91 data, width, height, flip_y, step, wrap_around, tolerance, test_name) { | |
92 var rowsColumnsToCheck = [[1, 1], | |
93 [0, width - 1], | |
94 [height - 1, 0], | |
95 [height - 1, width - 1], | |
96 [height - 3, width - 3]]; | |
97 | |
98 // Calculate all reference points based on top left and compare. | |
99 for (var j = 0; j < rowsColumnsToCheck.length; ++j) { | |
100 var row = rowsColumnsToCheck[j][0]; | |
101 var column = rowsColumnsToCheck[j][1]; | |
102 var i = (width * row + column) * 4; | |
103 var calculated = (data[0] + wrap_around + | |
104 step * ((flip_y ? -row : row) + column)) % wrap_around; | |
105 if (Math.abs(calculated - data[i]) > tolerance) { | |
106 return Promise.reject(test_name + ": reference value " + data[i] + | |
107 " differs from calculated: " + calculated + | |
108 " at index (row, column) " + i + " (" + row + ", " + column + | |
109 "). TopLeft value:" + data[0] + ", step:" + step + ", flip_y:" + | |
110 flip_y); | |
111 } | |
112 } | |
113 return true; | |
114 } | |
OLD | NEW |