Fixed bug in event-handling; Updated webrtc-adapter

feature/121
Christoph Oberhofer 9 years ago
parent 36205f8ceb
commit 3df696a1f7

2996
dist/quagga.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -108,6 +108,6 @@
"lodash": "^4.6.1",
"ndarray": "^1.0.18",
"ndarray-linear-interpolate": "^1.0.0",
"webrtc-adapter": "^1.0.6"
"webrtc-adapter": "^1.3.0"
}
}

@ -50,10 +50,22 @@ export default (function() {
var event = getEvent(eventName),
subscribers = event.subscribers;
event.subscribers = subscribers.filter(function(subscriber) {
// Publish one-time subscriptions
subscribers.filter(function(subscriber) {
return !!subscriber.once;
}).forEach((subscriber) => {
publishSubscription(subscriber, data);
});
// remove them from the subscriber
event.subscribers = subscribers.filter(function(subscriber) {
return !subscriber.once;
});
// publish the rest
event.subscribers.forEach((subscriber) => {
publishSubscription(subscriber, data);
});
},
once: function(event, callback, async) {
subscribe(event, {

@ -1,7 +1,6 @@
import {merge, pick} from 'lodash';
var streamRef,
loadedDataHandler;
var streamRef;
function waitForVideo(video) {
return new Promise((resolve, reject) => {
@ -35,13 +34,14 @@ function waitForVideo(video) {
function initCamera(video, constraints) {
return navigator.mediaDevices.getUserMedia(constraints)
.then((stream) => {
return new Promise((resolve, reject) => {
return new Promise((resolve) => {
streamRef = stream;
video.src = window.URL.createObjectURL(stream);
video.onloadedmetadata = (e) => {
video.setAttribute("autoplay", 'true');
video.srcObject = stream;
video.addEventListener('loadedmetadata', () => {
video.play();
resolve();
};
});
});
})
.then(waitForVideo.bind(null, video));
@ -51,13 +51,13 @@ function deprecatedConstraints(videoConstraints) {
const normalized = pick(videoConstraints, ["width", "height", "facingMode",
"aspectRatio", "deviceId"]);
if (typeof videoConstraints["minAspectRatio"] !== 'undefined' &&
videoConstraints["minAspectRatio"] > 0) {
normalized["aspectRatio"] = videoConstraints["minAspectRatio"];
if (typeof videoConstraints.minAspectRatio !== 'undefined' &&
videoConstraints.minAspectRatio > 0) {
normalized.aspectRatio = videoConstraints.minAspectRatio;
console.log("WARNING: Constraint 'minAspectRatio' is deprecated; Use 'aspectRatio' instead");
}
if (typeof videoConstraints["facing"] !== 'undefined') {
normalized["facingMode"] = videoConstraints["facing"];
if (typeof videoConstraints.facing !== 'undefined') {
normalized.facingMode = videoConstraints.facing;
console.log("WARNING: Constraint 'facing' is deprecated. Use 'facingMode' instead'");
}
return normalized;
@ -69,7 +69,7 @@ function applyCameraFacing(facing, constraints) {
}
if ( typeof MediaStreamTrack !== 'undefined' &&
typeof MediaStreamTrack.getSources !== 'undefined') {
return new Promise((resolve, reject) => {
return new Promise((resolve) => {
MediaStreamTrack.getSources((sourceInfos) => {
const videoSource = sourceInfos.filter((sourceInfo) => (
sourceInfo.kind === "video" && sourceInfo.facing === facing

@ -67,7 +67,6 @@ function initInputStream(cb) {
}
_inputStream.setAttribute("preload", "auto");
_inputStream.setAttribute("autoplay", true);
_inputStream.setInputStream(_config.inputStream);
_inputStream.addEventListener("canrecord", canRecord.bind(undefined, cb));
}

@ -27,9 +27,10 @@ beforeEach(function() {
sinon.spy(tracks[0], "stop");
video = {
src: null,
srcObject: null,
addEventListener: function() {},
removeEventListener: function() {},
setAttribute: sinon.spy(),
play: function() {},
videoWidth: 320,
videoHeight: 480
@ -60,12 +61,9 @@ describe('success', function() {
CameraAccess.request(video, {})
.then(function () {
expect(navigator.mediaDevices.getUserMedia.calledOnce).to.equal(true);
expect(video.src).to.deep.equal(stream);
expect(video.srcObject).to.deep.equal(stream);
done();
})
window.setTimeout(() => {
video.onloadedmetadata();
}, 100);
});
it("should allow deprecated constraints to be used", (done) => {
@ -89,9 +87,6 @@ describe('success', function() {
expect(args[0].video.maxAspectRatio).not.to.be.defined;
done();
})
window.setTimeout(() => {
video.onloadedmetadata();
}, 100);
});
});
@ -122,9 +117,6 @@ describe('success', function() {
expect(args[0].video.deviceId).to.equal("user");
done();
})
window.setTimeout(() => {
video.onloadedmetadata();
}, 100);
});
});
@ -132,15 +124,12 @@ describe('success', function() {
it('should release the camera', function (done) {
CameraAccess.request(video, {})
.then(function () {
expect(video.src).to.deep.equal(stream);
expect(video.srcObject).to.deep.equal(stream);
CameraAccess.release();
expect(video.src.getVideoTracks()).to.have.length(1);
expect(video.src.getVideoTracks()[0].stop.calledOnce).to.equal(true);
expect(video.srcObject.getVideoTracks()).to.have.length(1);
expect(video.srcObject.getVideoTracks()[0].stop.calledOnce).to.equal(true);
done();
});
window.setTimeout(() => {
video.onloadedmetadata();
}, 100);
});
});
});

Loading…
Cancel
Save