Restructured eventEmitter into various modules
This commit is contained in:
parent
cdd14b9ed5
commit
7bbbf7ee7b
|
@ -3110,4 +3110,6 @@ var init = function () {
|
||||||
light.init();
|
light.init();
|
||||||
proj.init();
|
proj.init();
|
||||||
cam.init();
|
cam.init();
|
||||||
|
|
||||||
|
capture.init();
|
||||||
};
|
};
|
|
@ -1,16 +1,23 @@
|
||||||
var capture = {},
|
var capture = {},
|
||||||
|
eventEmitter,
|
||||||
fs = require('fs'),
|
fs = require('fs'),
|
||||||
exec = require('child_process').exec;
|
exec = require('child_process').exec;
|
||||||
|
|
||||||
capture.active = false;
|
capture.active = true;
|
||||||
capture.store = {};
|
capture.store = {
|
||||||
|
events : [],
|
||||||
|
start : 0
|
||||||
|
};
|
||||||
|
|
||||||
capture.start = function () {
|
capture.start = function (first) {
|
||||||
'use strict';
|
'use strict';
|
||||||
capture.store.events = [];
|
capture.store.events = [];
|
||||||
capture.store.start = +new Date();
|
capture.store.start = +new Date();
|
||||||
};
|
};
|
||||||
|
capture.end = function () {
|
||||||
|
'use strict';
|
||||||
|
return capture.store;
|
||||||
|
};
|
||||||
capture.proj_start = function () {
|
capture.proj_start = function () {
|
||||||
'use strict';
|
'use strict';
|
||||||
var e = {
|
var e = {
|
||||||
|
@ -18,7 +25,6 @@ capture.proj_start = function () {
|
||||||
};
|
};
|
||||||
capture.store.events.push(e);
|
capture.store.events.push(e);
|
||||||
};
|
};
|
||||||
|
|
||||||
capture.proj_end = function () {
|
capture.proj_end = function () {
|
||||||
'use strict';
|
'use strict';
|
||||||
var e = {
|
var e = {
|
||||||
|
@ -26,56 +32,48 @@ capture.proj_end = function () {
|
||||||
};
|
};
|
||||||
capture.store.events.push(e);
|
capture.store.events.push(e);
|
||||||
};
|
};
|
||||||
|
//out-000001
|
||||||
capture.report = {};
|
capture.pad = function (frame, len) {
|
||||||
|
|
||||||
capture.report.parse = function (first, report, fps, type) {
|
|
||||||
'use strict';
|
'use strict';
|
||||||
var output = [],
|
var pad = '',
|
||||||
frame,
|
ch = '0';
|
||||||
last = null,
|
frame += '';
|
||||||
buffer;
|
len = len - frame.length;
|
||||||
if (typeof fps === 'undefined') {
|
if (len <= 0) return frame;
|
||||||
fps = 24;
|
while (true) {
|
||||||
|
if (len & 1) {
|
||||||
|
pad += ch;
|
||||||
}
|
}
|
||||||
frame = 1000 / fps;
|
len >>= 1;
|
||||||
if (typeof report === 'undefined') {
|
if (len) {
|
||||||
report = capture.store;
|
ch += ch;
|
||||||
} else {
|
} else {
|
||||||
report = JSON.parse(fs.readFileSync(report, 'utf8'));
|
break;
|
||||||
}
|
|
||||||
if (typeof type === 'undefined') {
|
|
||||||
type = 'still';
|
|
||||||
}
|
|
||||||
if (typeof first === 'undefined') {
|
|
||||||
first = 0;
|
|
||||||
}
|
|
||||||
if (type === 'still') {
|
|
||||||
//first clean frame
|
|
||||||
for (i = 0; i < report.events.length; i++) {
|
|
||||||
if (typeof report.events[i].start !=== 'undefined') {
|
|
||||||
buffer = report.events[i].start;
|
|
||||||
if (last !== null) {
|
|
||||||
|
|
||||||
output.push();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
buffer = report.events[i].end - buffer;
|
|
||||||
last = report.events[i].end;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return pad + frame;
|
||||||
} else if (type === 'video') {
|
|
||||||
|
|
||||||
}
|
|
||||||
return output;
|
|
||||||
};
|
};
|
||||||
|
capture.extract = function (input, output, good, real, neg) {
|
||||||
capture.report.render = function () {
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
var tc = capture.report.timecode(good),
|
||||||
|
frame = capture.pad(real, 6),
|
||||||
|
neg_cmd = ' -vf lutrgb="r=negval:g=negval:b=negval" ',
|
||||||
|
cmd = 'ffmpeg -ss ' + tc + ' -i ' + input + '{{neg_cmd}}-vframes 1 ' + output + 'out-' + frame + '.tif';
|
||||||
|
if (neg) {
|
||||||
|
cmd = cmd.replace('{{neg_cmd}}', neg_cmd);
|
||||||
|
} else {
|
||||||
|
cmd = cmd.replace('{{neg_cmd}}', ' ');
|
||||||
|
}
|
||||||
|
console.log(cmd);
|
||||||
|
exec(cmd, function (err, std) {
|
||||||
|
console.log(err);
|
||||||
|
console.log(std);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
capture.cp = function (input, output, good, real) {
|
||||||
|
'use strict';
|
||||||
|
var still = '';
|
||||||
};
|
};
|
||||||
|
|
||||||
capture.test = function () {
|
capture.test = function () {
|
||||||
'use strict';
|
'use strict';
|
||||||
var i = -1,
|
var i = -1,
|
||||||
|
@ -86,7 +84,7 @@ capture.test = function () {
|
||||||
if (i === len) {
|
if (i === len) {
|
||||||
clearInterval(intval);
|
clearInterval(intval);
|
||||||
intval = null;
|
intval = null;
|
||||||
console.dir(capture.store);
|
//console.dir(capture.store);
|
||||||
parse();
|
parse();
|
||||||
} else {
|
} else {
|
||||||
if (i % 2 === 0) {
|
if (i % 2 === 0) {
|
||||||
|
@ -97,12 +95,125 @@ capture.test = function () {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
parse = function () {
|
parse = function () {
|
||||||
capture.report.parse();
|
capture.report.parse(45, 0);
|
||||||
};
|
};
|
||||||
capture.start();
|
capture.start();
|
||||||
|
next();
|
||||||
intval = setInterval(next, 800);
|
intval = setInterval(next, 800);
|
||||||
};
|
};
|
||||||
|
capture.init = function () {
|
||||||
|
'use strict';
|
||||||
|
eventEmitter.on('arduino_send', function (cmd) {
|
||||||
|
console.log(cmd);
|
||||||
|
if (capture.active
|
||||||
|
&& cmd.trim() === 'p') {
|
||||||
|
if (capture.store.start === 0) {
|
||||||
|
capture.start();
|
||||||
|
}
|
||||||
|
capture.proj_start();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
eventEmitter.on('arduino_end', function (cmd) {
|
||||||
|
console.log(cmd);
|
||||||
|
if (capture.active
|
||||||
|
&& cmd.trim() === 'p') {
|
||||||
|
capture.proj_end();
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
capture.save = function () {
|
||||||
|
'use strict';
|
||||||
|
var file = './data/transfer-',
|
||||||
|
time = +new Date(),
|
||||||
|
json = JSON.stringify(capture.store);
|
||||||
|
fs.writeFileSync(file + time + '.json', json, 'utf8');
|
||||||
|
};
|
||||||
|
|
||||||
|
//ffmpeg -f image2 -framerate 24 -start_number 090000 -i input_file_%06d.ext -c:v v210 -an output_file
|
||||||
|
//'-%06d
|
||||||
|
|
||||||
|
capture.report = {};
|
||||||
|
capture.report.parse = function (inmark, first, report, fps) {
|
||||||
|
'use strict';
|
||||||
|
var all = [],
|
||||||
|
output = {
|
||||||
|
good : [],
|
||||||
|
real : []
|
||||||
|
},
|
||||||
|
good = [],
|
||||||
|
real,
|
||||||
|
f,
|
||||||
|
frame,
|
||||||
|
last = -1,
|
||||||
|
i;
|
||||||
|
if (typeof fps === 'undefined') {
|
||||||
|
fps = 24;
|
||||||
|
}
|
||||||
|
f = 1000 / fps;
|
||||||
|
if (typeof report === 'undefined') {
|
||||||
|
report = capture.store;
|
||||||
|
}
|
||||||
|
if (typeof first === 'undefined') {
|
||||||
|
first = 0;
|
||||||
|
}
|
||||||
|
if (typeof inmark === 'undefined') {
|
||||||
|
inmark = 0;
|
||||||
|
}
|
||||||
|
//first clean frame
|
||||||
|
for (i = 0; i < report.events.length; i++) {
|
||||||
|
if (typeof report.events[i].end !== 'undefined') {
|
||||||
|
frame = (report.events[i].end - report.start) / f;
|
||||||
|
frame = Math.round(frame);
|
||||||
|
last = frame;
|
||||||
|
} else if (typeof report.events[i].start !== 'undefined') {
|
||||||
|
frame = (report.events[i].start - report.start) / f;
|
||||||
|
frame = Math.round(frame);
|
||||||
|
if (last !== -1) {
|
||||||
|
//console.log(last + '-' + frame);
|
||||||
|
all.push(capture.report.arr(last, frame));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
good = all.map(function (arr) {
|
||||||
|
var center = Math.round(arr.length / 2);
|
||||||
|
return arr[center] + inmark;
|
||||||
|
});
|
||||||
|
|
||||||
|
real = output.map(function (val, i) {
|
||||||
|
return first + i;
|
||||||
|
});
|
||||||
|
|
||||||
|
output.good = good;
|
||||||
|
output.real = real;
|
||||||
|
|
||||||
|
return output;
|
||||||
|
};
|
||||||
|
capture.report.arr = function (start, end) {
|
||||||
|
'use strict';
|
||||||
|
var arr = [],
|
||||||
|
i;
|
||||||
|
for (i = start; i < end + 1; i++) {
|
||||||
|
arr.push(i);
|
||||||
|
}
|
||||||
|
return arr;
|
||||||
|
};
|
||||||
|
capture.report.timecode = function (frame) {
|
||||||
|
'use strict';
|
||||||
|
//00:03:00 no dropframe
|
||||||
|
var a = capture.pad(Math.floor((frame / 60) / 60), 2),
|
||||||
|
b = capture.pad(Math.floor(frame / 60), 2),
|
||||||
|
c = capture.pad(frame % 24);
|
||||||
|
return a + ':' + b + ':' + c;
|
||||||
|
};
|
||||||
|
capture.report.render = function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = function (ee) {
|
||||||
|
eventEmitter = ee;
|
||||||
|
return capture;
|
||||||
|
};
|
||||||
|
|
||||||
capture.test();
|
|
||||||
//module.exports = capture;
|
|
|
@ -1,8 +1,7 @@
|
||||||
var serialport = require('serialport'),
|
var serialport = require('serialport'),
|
||||||
SerialPort = serialport.SerialPort,
|
SerialPort = serialport.SerialPort,
|
||||||
exec = require('child_process').exec,
|
exec = require('child_process').exec,
|
||||||
events = require('events'),
|
eventEmitter,
|
||||||
eventEmitter = new events.EventEmitter(),
|
|
||||||
mcopy = {};
|
mcopy = {};
|
||||||
|
|
||||||
/******
|
/******
|
||||||
|
@ -205,7 +204,8 @@ mcopy.arduino.fakeConnect = function (serial, callback) {
|
||||||
};
|
};
|
||||||
|
|
||||||
if (typeof module !== 'undefined' && module.parent) {
|
if (typeof module !== 'undefined' && module.parent) {
|
||||||
module.exports = function (cfg) {
|
module.exports = function (cfg, ee) {
|
||||||
|
eventEmitter = ee;
|
||||||
mcopy.cfg = cfg;
|
mcopy.cfg = cfg;
|
||||||
return mcopy.arduino;
|
return mcopy.arduino;
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,13 +10,14 @@ var electron = require('electron'),
|
||||||
uuid = require('node-uuid'),
|
uuid = require('node-uuid'),
|
||||||
Q = require('q'),
|
Q = require('q'),
|
||||||
events = require('events'),
|
events = require('events'),
|
||||||
|
ee = new events.EventEmitter(),
|
||||||
mcopy = {},
|
mcopy = {},
|
||||||
mainWindow,
|
mainWindow,
|
||||||
mscript,
|
mscript,
|
||||||
arduino,
|
arduino,
|
||||||
projector,
|
projector,
|
||||||
camera,
|
camera,
|
||||||
capture = require('./lib/capture-report.js'),
|
capture = require('./lib/capture-report.js')(ee),
|
||||||
log = {};
|
log = {};
|
||||||
|
|
||||||
mcopy.cfg = {};
|
mcopy.cfg = {};
|
||||||
|
@ -467,7 +468,7 @@ var init = function () {
|
||||||
|
|
||||||
capture.init();
|
capture.init();
|
||||||
|
|
||||||
arduino = require('./lib/mcopy-arduino.js')(mcopy.cfg);
|
arduino = require('./lib/mcopy-arduino.js')(mcopy.cfg, ee);
|
||||||
mscript = require('./lib/mscript.js');
|
mscript = require('./lib/mscript.js');
|
||||||
|
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
|
|
|
@ -71,4 +71,6 @@ var init = function () {
|
||||||
light.init();
|
light.init();
|
||||||
proj.init();
|
proj.init();
|
||||||
cam.init();
|
cam.init();
|
||||||
|
|
||||||
|
capture.init();
|
||||||
};
|
};
|
Loading…
Reference in New Issue