processor = ({
timerCallback: function() {
if (this.video.paused || this.video.ended) {
return;
}
this.computeFrame();
var self = this;
setTimeout(function() {
self.timerCallback();
}, 16);
},
doLoad: function() {
this.video = myVideo;
this.c1 = myCanvas;
this.ctx1 = this.c1.getContext("2d");
var self = this;
this.video.addEventListener(
"play",
function() {
self.width = self.video.width;
self.height = self.video.height;
self.timerCallback();
},
false
);
},
// var frame = this.ctx1.getImageData(0, 0, this.width, this.height);
// var l = frame.data.length / 4;
// for (var i = 0; i < l; i++) {
// var grey =
// (frame.data[i * 4 + 0] +
// frame.data[i * 4 + 1] +
// frame.data[i * 4 + 2]) /
// 3;
// frame.data[i * 4 + 0] = grey;
// frame.data[i * 4 + 1] = grey;
// frame.data[i * 4 + 2] = grey;
// }
// this.ctx1.putImageData(frame, 0, 0);
// return;
// }
// computeFrame: function() {
// this.ctx1.drawImage(this.video, 0, 0, this.width, this.height);
// var frame = this.ctx1.getImageData(0, 0, this.width, this.height);
// var l = frame.data.length / 4;
// for (var i = 0; i < l; i++) {
// var grey =
// (frame.data[i * 4 + 0] +
// frame.data[i * 4 + 1] +
// frame.data[i * 4 + 2]) /
// 3;
// frame.data[i * 4 + 0] = grey;
// frame.data[i * 4 + 1] = grey;
// frame.data[i * 4 + 2] = grey;
// }
// this.ctx1.putImageData(frame, 0, 0);
// return;
// }
// computeFrame: function() {
// this.ctx1.drawImage(this.video, 0, 0, this.width, this.height);
// var frame = this.ctx1.getImageData(0, 0, this.width, this.height);
// var l = frame.data.length / 4;
// for (var i = 0; i < l; i++) {
// var grey =
// (frame.data[i * 4 + 0] +
// frame.data[i * 4 + 1] +
// frame.data[i * 4 + 2]) /
// 3;
// frame.data[i * 4 + 0] = grey;
// frame.data[i * 4 + 1] = grey;
// frame.data[i * 4 + 2] = grey;
// }
// this.ctx1.putImageData(frame, 0, 0);
// return;
// }
computeFrame: function() {
this.ctx1.drawImage(this.video, 0, 0, this.width, this.height);
var frame = this.ctx1.getImageData(0, 0, this.width, this.height);
// var l = frame.data.length / 4;
var l = frame.data.length;
if (color_fluct != 0 | color_base != 0) {
// let cur = episode_selection[img_choice]
// if (colorMap == "Color Pallette") {
// interpolator = d3.interpolateRgb(...cur_colors);
// } else {
// interpolator = d3[`interpolate${colorMap}`];
// }
let interpolator = d3[`interpolate${colorMap}`];
const LUT = Array.from({ length: 256 }, (_, i) => d3.color(interpolator(i / 255)));
let w = color_fluct*spectralSpread/50 + color_base*spectralCentroid/50
for(let i=0; i < l; i+=4) {
const color = LUT[frame.data[i]];
// frame.data[i] = (1-w) * frame.data[i] + w*color.r;
// frame.data[i+1] = (1-w) * frame.data[i+1] + w*color.g;
// frame.data[i+2] = (1-w) * frame.data[i+2] + w*color.b;
frame.data[i] = color.r;
frame.data[i+1] = color.g;
frame.data[i+2] = color.b;
}
// var grey =
// (frame.data[i] +
// frame.data[i+1] +
// frame.data[i+2]) /
// 3;
// frame.data[i] = grey;
// frame.data[i+1] = grey;
// frame.data[i+2] = grey;
// }
}
this.ctx1.putImageData(frame, 0, 0);
return;
}
})