tav-media
Version:
Cross platform media editing framework
54 lines (53 loc) • 1.54 kB
JavaScript
let getTime;
try {
getTime = performance.now.bind(performance);
}
catch (e) {
getTime = Date.now.bind(Date);
}
export class Clock {
constructor() {
this.startTime = getTime();
this.markers = {};
}
reset() {
this.startTime = getTime();
this.markers = {};
}
mark(key) {
if (!key) {
console.log('Clock.mark(): An empty marker name was specified!');
return;
}
if (Object.keys(this.markers).find((markerKey) => markerKey === key)) {
console.log(`Clock.mark(): The specified marker name '${key}' already exists!`);
return;
}
this.markers[key] = getTime();
}
measure(makerFrom, makerTo) {
let start;
let end;
if (!makerFrom) {
start = this.startTime;
}
else {
if (!Object.keys(this.markers).find((markerKey) => markerKey === makerFrom)) {
console.log(`Clock.measure(): The specified makerFrom '${makerFrom}' does not exist!`);
return 0;
}
start = this.markers[makerFrom];
}
if (!makerTo) {
end = getTime();
}
else {
if (!Object.keys(this.markers).find((markerKey) => markerKey === makerTo)) {
console.log(`Clock.measure(): The specified makerTo '${makerTo}' does not exist!`);
return 0;
}
end = this.markers[makerTo];
}
return end - start;
}
}