Index: content/test/data/media/depth_stream_test_utilities.js |
diff --git a/content/test/data/media/depth_stream_test_utilities.js b/content/test/data/media/depth_stream_test_utilities.js |
index ab358f564be1f5afbfc2b19b350bd0dbd9e058f3..5e71b41b0d6444c1d0b14c071c58b91fa140f7f4 100644 |
--- a/content/test/data/media/depth_stream_test_utilities.js |
+++ b/content/test/data/media/depth_stream_test_utilities.js |
@@ -32,80 +32,41 @@ function getFake16bitStream() { |
}); |
} |
-function testVideoToImageBitmap(videoElementName, success, error) |
-{ |
- var bitmaps = {}; |
- var video = $(videoElementName); |
- var canvas = document.createElement('canvas'); |
- canvas.width = 96; |
- canvas.height = 96; |
- document.body.appendChild(canvas); |
- var p1 = createImageBitmap(video).then(function(imageBitmap) { |
- return runImageBitmapTest(imageBitmap, canvas, false); }); |
- var p2 = createImageBitmap(video, |
- {imageOrientation: "none", premultiplyAlpha: "premultiply"}).then( |
- function(imageBitmap) { |
- return runImageBitmapTest(imageBitmap, canvas, false); }); |
- var p3 = createImageBitmap(video, |
- {imageOrientation: "none", premultiplyAlpha: "default"}).then( |
- function(imageBitmap) { |
- return runImageBitmapTest(imageBitmap, canvas, false); }); |
- var p4 = createImageBitmap(video, |
- {imageOrientation: "none", premultiplyAlpha: "none"}).then( |
- function(imageBitmap) { |
- return runImageBitmapTest(imageBitmap, canvas, false); }); |
- var p5 = createImageBitmap(video, |
- {imageOrientation: "flipY", premultiplyAlpha: "premultiply"}).then( |
- function(imageBitmap) { |
- return runImageBitmapTest(imageBitmap, canvas, true); }); |
- var p6 = createImageBitmap(video, |
- {imageOrientation: "flipY", premultiplyAlpha: "default"}).then( |
- function(imageBitmap) { |
- return runImageBitmapTest(imageBitmap, canvas, true); }); |
- var p7 = createImageBitmap(video, |
- {imageOrientation: "flipY", premultiplyAlpha: "none"}).then( |
- function(imageBitmap) { |
- return runImageBitmapTest(imageBitmap, canvas, true); }); |
- return Promise.all([p1, p2, p3, p4, p5, p6, p7]).then(success(), reason => { |
- return error({name: reason}); |
- }); |
-} |
- |
-function runImageBitmapTest(bitmap, canvas, flipped) { |
- var context = canvas.getContext('2d'); |
- context.drawImage(bitmap,0,0); |
- var imageData = context.getImageData(0, 0, canvas.width, canvas.height); |
- // Fake capture device 96x96 depth image is gradient. See also |
- // Draw16BitGradient in fake_video_capture_device.cc. |
- var color_step = 255.0 / (canvas.width + canvas.height); |
+// Data is RGBA array data and could be used with different formats: |
+// e.g. Uint8Array, Uint8ClampedArray, Float32Array... |
+// Value at point (row, column) is calculated as |
+// (top_left_value + (row + column) * step) % wrap_around. wrap_around is 255 |
+// (for Uint8) or 1.0 for float. See FakeVideoCaptureDevice for details. |
+function verifyPixels( |
+ data, width, height, flip_y, step, wrap_around, tolerance) { |
var rowsColumnsToCheck = [[1, 1], |
- [0, canvas.width - 1], |
- [canvas.height - 1, 0], |
- [canvas.height - 1, canvas.width - 1], |
- [canvas.height - 3, canvas.width - 4]]; |
+ [0, width - 1], |
+ [height - 1, 0], |
+ [height - 1, width - 1], |
+ [height - 3, width - 3]]; |
// Same value is expected for all color components. |
- if (imageData.data[0] != imageData.data[1] || |
- imageData.data[0] != imageData.data[2]) |
- return Promise.reject("Values " + imageData.data[0] + ", " + |
- imageData.data[1] + ", " + imageData.data[2] + " differ at top left"); |
+ if (data[0] != data[1] || data[0] != data[2]) { |
+ return Promise.reject("Values " + data[0] + ", " + data[1] + ", " + |
+ data[2] + " differ at top left."); |
+ } |
// Calculate all reference points based on top left and compare. |
for (var j = 0; j < rowsColumnsToCheck.length; ++j) { |
var row = rowsColumnsToCheck[j][0]; |
var column = rowsColumnsToCheck[j][1]; |
- var i = (canvas.width * row + column) * 4; |
- if (imageData.data[i] != imageData.data[i + 1] || |
- imageData.data[i] != imageData.data[i + 2]) |
- return Promise.reject("Values " + imageData.data[i] + ", " + |
- imageData.data[i + 1] + ", " + imageData.data[i + 2] + |
- " differ at index " + i); |
- var calculated = (imageData.data[0] + |
- color_step * ((flipped ? -row : row) + column)) % 255; |
- if (Math.abs(calculated - imageData.data[i]) > 2) |
- return Promise.reject("Reference value " + imageData.data[i] + |
- " differs from calculated: " + calculated + " at index " + i + |
- ". TopLeft value:" + imageData.data[0]); |
+ var i = (width * row + column) * 4; |
+ if (data[i] != data[i + 1] || data[i] != data[i + 2]) { |
+ return Promise.reject("Values " + data[i] + ", " + data[i + 1] + ", " + |
+ data[i + 2] + " differ at index " + i); |
+ } |
+ var calculated = (data[0] + |
+ step * ((flip_y ? -row : row) + column)) % wrap_around; |
+ if (Math.abs(calculated - data[i]) > tolerance) |
+ return Promise.reject("Reference value " + data[i] + |
+ " differs from calculated: " + calculated + |
+ " at index (row, column) " + i + " (" + row + ", " + column + |
+ "). TopLeft value:" + data[0] + ", step:" + step); |
} |
return true; |
-} |
+} |