@loaders.gl/video 3.3.0-alpha.1 → 3.3.0-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dist.min.js +4 -2
- package/dist/es5/bundle.js +0 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/gif-builder.js +17 -37
- package/dist/es5/gif-builder.js.map +1 -1
- package/dist/es5/index.js +4 -7
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/gifshot/gifshot-loader.js +2 -17
- package/dist/es5/lib/gifshot/gifshot-loader.js.map +1 -1
- package/dist/es5/lib/gifshot/gifshot.js +8 -269
- package/dist/es5/lib/gifshot/gifshot.js.map +1 -1
- package/dist/es5/lib/parsers/parse-video.js +0 -6
- package/dist/es5/lib/parsers/parse-video.js.map +1 -1
- package/dist/es5/lib/utils/assert.js +0 -1
- package/dist/es5/lib/utils/assert.js.map +1 -1
- package/dist/es5/video-loader.js +2 -4
- package/dist/es5/video-loader.js.map +1 -1
- package/dist/esm/bundle.js +1 -1
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/gif-builder.js +20 -13
- package/dist/esm/gif-builder.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/gifshot/gifshot-loader.js +4 -4
- package/dist/esm/lib/gifshot/gifshot-loader.js.map +1 -1
- package/dist/esm/lib/gifshot/gifshot.js +9 -269
- package/dist/esm/lib/gifshot/gifshot.js.map +1 -1
- package/dist/esm/lib/parsers/parse-video.js +1 -0
- package/dist/esm/lib/parsers/parse-video.js.map +1 -1
- package/dist/esm/lib/utils/assert.js.map +1 -1
- package/dist/esm/video-loader.js +3 -1
- package/dist/esm/video-loader.js.map +1 -1
- package/dist/lib/gifshot/gifshot.d.ts.map +1 -1
- package/dist/lib/gifshot/gifshot.js +7 -5
- package/dist/video-loader.d.ts +1 -1
- package/dist/video-loader.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/lib/gifshot/gifshot.ts +6 -5
|
@@ -4,31 +4,29 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
+
|
|
7
8
|
var utils = {
|
|
8
9
|
URL: globalThis.URL || globalThis.webkitURL || globalThis.mozURL || globalThis.msURL,
|
|
9
10
|
getUserMedia: function () {
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
if (!globalThis.navigator) return globalThis.navigator;
|
|
12
|
+
var getUserMedia = globalThis.navigator.getUserMedia || globalThis.navigator.webkitGetUserMedia || globalThis.navigator.mozGetUserMedia || globalThis.navigator.msGetUserMedia;
|
|
13
|
+
return getUserMedia ? getUserMedia.bind(globalThis.navigator) : getUserMedia;
|
|
12
14
|
}(),
|
|
13
15
|
requestAnimFrame: globalThis.requestAnimationFrame || globalThis.webkitRequestAnimationFrame || globalThis.mozRequestAnimationFrame || globalThis.oRequestAnimationFrame || globalThis.msRequestAnimationFrame,
|
|
14
16
|
requestTimeout: function requestTimeout(callback, delay) {
|
|
15
17
|
callback = callback || utils.noop;
|
|
16
18
|
delay = delay || 0;
|
|
17
|
-
|
|
18
19
|
if (!utils.requestAnimFrame) {
|
|
19
20
|
return setTimeout(callback, delay);
|
|
20
21
|
}
|
|
21
|
-
|
|
22
22
|
var start = new Date().getTime();
|
|
23
23
|
var handle = new Object();
|
|
24
24
|
var requestAnimFrame = utils.requestAnimFrame;
|
|
25
|
-
|
|
26
25
|
var loop = function loop() {
|
|
27
26
|
var current = new Date().getTime();
|
|
28
27
|
var delta = current - start;
|
|
29
28
|
delta >= delay ? callback.call() : handle.value = requestAnimFrame(loop);
|
|
30
29
|
};
|
|
31
|
-
|
|
32
30
|
handle.value = requestAnimFrame(loop);
|
|
33
31
|
return handle;
|
|
34
32
|
},
|
|
@@ -46,7 +44,6 @@ var utils = {
|
|
|
46
44
|
var enc2 = void 0;
|
|
47
45
|
var enc3 = void 0;
|
|
48
46
|
var enc4 = void 0;
|
|
49
|
-
|
|
50
47
|
while (i < l) {
|
|
51
48
|
chr1 = input.charCodeAt(i++);
|
|
52
49
|
chr2 = input.charCodeAt(i++);
|
|
@@ -55,19 +52,15 @@ var utils = {
|
|
|
55
52
|
enc2 = (chr1 & 3) << 4 | chr2 >> 4;
|
|
56
53
|
enc3 = (chr2 & 15) << 2 | chr3 >> 6;
|
|
57
54
|
enc4 = chr3 & 63;
|
|
58
|
-
|
|
59
55
|
if (isNaN(chr2)) {
|
|
60
56
|
enc3 = enc4 = 64;
|
|
61
57
|
} else if (isNaN(chr3)) {
|
|
62
58
|
enc4 = 64;
|
|
63
59
|
}
|
|
64
|
-
|
|
65
60
|
output = output + key.charAt(enc1) + key.charAt(enc2) + key.charAt(enc3) + key.charAt(enc4);
|
|
66
61
|
}
|
|
67
|
-
|
|
68
62
|
return output;
|
|
69
63
|
};
|
|
70
|
-
|
|
71
64
|
return btoa ? btoa.bind(globalThis) : utils.noop;
|
|
72
65
|
}(),
|
|
73
66
|
isObject: function isObject(obj) {
|
|
@@ -114,7 +107,6 @@ var utils = {
|
|
|
114
107
|
ogg: false,
|
|
115
108
|
webm: false
|
|
116
109
|
};
|
|
117
|
-
|
|
118
110
|
try {
|
|
119
111
|
if (testEl && testEl.canPlayType) {
|
|
120
112
|
supportObj.mp4 = testEl.canPlayType('video/mp4; codecs="mp4v.20.8"') !== '';
|
|
@@ -124,7 +116,6 @@ var utils = {
|
|
|
124
116
|
supportObj.webm = testEl.canPlayType('video/webm; codecs="vp8, vorbis"') !== -1;
|
|
125
117
|
}
|
|
126
118
|
} catch (e) {}
|
|
127
|
-
|
|
128
119
|
return supportObj;
|
|
129
120
|
}()
|
|
130
121
|
},
|
|
@@ -132,11 +123,9 @@ var utils = {
|
|
|
132
123
|
each: function each(collection, callback) {
|
|
133
124
|
var x = void 0;
|
|
134
125
|
var len = void 0;
|
|
135
|
-
|
|
136
126
|
if (utils.isArray(collection)) {
|
|
137
127
|
x = -1;
|
|
138
128
|
len = collection.length;
|
|
139
|
-
|
|
140
129
|
while (++x < len) {
|
|
141
130
|
if (callback(x, collection[x]) === false) {
|
|
142
131
|
break;
|
|
@@ -156,14 +145,12 @@ var utils = {
|
|
|
156
145
|
if (!utils.isObject(defaultOptions) || !utils.isObject(userOptions) || !Object.keys) {
|
|
157
146
|
return;
|
|
158
147
|
}
|
|
159
|
-
|
|
160
148
|
var newObj = {};
|
|
161
149
|
utils.each(defaultOptions, function (key, val) {
|
|
162
150
|
newObj[key] = defaultOptions[key];
|
|
163
151
|
});
|
|
164
152
|
utils.each(userOptions, function (key, val) {
|
|
165
153
|
var currentUserOption = userOptions[key];
|
|
166
|
-
|
|
167
154
|
if (!utils.isObject(currentUserOption)) {
|
|
168
155
|
newObj[key] = currentUserOption;
|
|
169
156
|
} else if (!defaultOptions[key]) {
|
|
@@ -178,7 +165,6 @@ var utils = {
|
|
|
178
165
|
if (!utils.isElement(elem)) {
|
|
179
166
|
return;
|
|
180
167
|
}
|
|
181
|
-
|
|
182
168
|
if (utils.isString(attr) && utils.isString(val)) {
|
|
183
169
|
elem.style[attr] = val;
|
|
184
170
|
} else if (utils.isObject(attr)) {
|
|
@@ -191,7 +177,6 @@ var utils = {
|
|
|
191
177
|
if (!utils.isElement(node)) {
|
|
192
178
|
return;
|
|
193
179
|
}
|
|
194
|
-
|
|
195
180
|
if (node.parentNode) {
|
|
196
181
|
node.parentNode.removeChild(node);
|
|
197
182
|
}
|
|
@@ -200,7 +185,6 @@ var utils = {
|
|
|
200
185
|
if (!utils.isString(content)) {
|
|
201
186
|
return {};
|
|
202
187
|
}
|
|
203
|
-
|
|
204
188
|
try {
|
|
205
189
|
var blob = new utils.Blob([content], {
|
|
206
190
|
type: 'text/javascript'
|
|
@@ -220,11 +204,9 @@ var utils = {
|
|
|
220
204
|
},
|
|
221
205
|
getFontSize: function getFontSize() {
|
|
222
206
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
223
|
-
|
|
224
207
|
if (!document.body || options.resizeFont === false) {
|
|
225
208
|
return options.fontSize;
|
|
226
209
|
}
|
|
227
|
-
|
|
228
210
|
var text = options.text;
|
|
229
211
|
var containerWidth = options.gifWidth;
|
|
230
212
|
var fontSize = parseInt(options.fontSize, 10);
|
|
@@ -238,11 +220,9 @@ var utils = {
|
|
|
238
220
|
span.style.textIndent = '-9999px';
|
|
239
221
|
span.style.visibility = 'hidden';
|
|
240
222
|
document.body.appendChild(span);
|
|
241
|
-
|
|
242
223
|
while (span.offsetWidth > containerWidth && fontSize >= minFontSize) {
|
|
243
224
|
span.style.fontSize = "".concat(--fontSize, "px");
|
|
244
225
|
}
|
|
245
|
-
|
|
246
226
|
document.body.removeChild(span);
|
|
247
227
|
return "".concat(fontSize, "px");
|
|
248
228
|
},
|
|
@@ -257,7 +237,6 @@ var error = {
|
|
|
257
237
|
var errorObj = {};
|
|
258
238
|
utils.each(error.validators, function (indece, currentValidator) {
|
|
259
239
|
var errorCode = currentValidator.errorCode;
|
|
260
|
-
|
|
261
240
|
if (!skipObj[errorCode] && !currentValidator.condition) {
|
|
262
241
|
errorObj = currentValidator;
|
|
263
242
|
errorObj.error = true;
|
|
@@ -311,9 +290,7 @@ var error = {
|
|
|
311
290
|
var error$2 = Object.freeze({
|
|
312
291
|
default: error
|
|
313
292
|
});
|
|
314
|
-
|
|
315
293
|
var noop = function noop() {};
|
|
316
|
-
|
|
317
294
|
var defaultOptions = {
|
|
318
295
|
sampleInterval: 10,
|
|
319
296
|
numWorkers: 2,
|
|
@@ -348,32 +325,26 @@ var defaultOptions = {
|
|
|
348
325
|
var defaultOptions$2 = Object.freeze({
|
|
349
326
|
default: defaultOptions
|
|
350
327
|
});
|
|
351
|
-
|
|
352
328
|
function isSupported() {
|
|
353
329
|
return error.isValid();
|
|
354
330
|
}
|
|
355
|
-
|
|
356
331
|
function isWebCamGIFSupported() {
|
|
357
332
|
return error.isValid();
|
|
358
333
|
}
|
|
359
|
-
|
|
360
334
|
function isSupported$1() {
|
|
361
335
|
var options = {
|
|
362
336
|
getUserMedia: true
|
|
363
337
|
};
|
|
364
338
|
return error.isValid(options);
|
|
365
339
|
}
|
|
366
|
-
|
|
367
340
|
function isExistingVideoGIFSupported(codecs) {
|
|
368
341
|
var hasValidCodec = false;
|
|
369
|
-
|
|
370
342
|
if (utils.isArray(codecs) && codecs.length) {
|
|
371
343
|
utils.each(codecs, function (indece, currentCodec) {
|
|
372
344
|
if (utils.isSupported.videoCodecs[currentCodec]) {
|
|
373
345
|
hasValidCodec = true;
|
|
374
346
|
}
|
|
375
347
|
});
|
|
376
|
-
|
|
377
348
|
if (!hasValidCodec) {
|
|
378
349
|
return false;
|
|
379
350
|
}
|
|
@@ -382,12 +353,10 @@ function isExistingVideoGIFSupported(codecs) {
|
|
|
382
353
|
return false;
|
|
383
354
|
}
|
|
384
355
|
}
|
|
385
|
-
|
|
386
356
|
return error.isValid({
|
|
387
357
|
getUserMedia: true
|
|
388
358
|
});
|
|
389
359
|
}
|
|
390
|
-
|
|
391
360
|
function NeuQuant() {
|
|
392
361
|
var netsize = 256;
|
|
393
362
|
var prime1 = 499;
|
|
@@ -425,7 +394,6 @@ function NeuQuant() {
|
|
|
425
394
|
var bias = [];
|
|
426
395
|
var freq = [];
|
|
427
396
|
var radpower = [];
|
|
428
|
-
|
|
429
397
|
function NeuQuantConstructor(thepic, len, sample) {
|
|
430
398
|
var i;
|
|
431
399
|
var p;
|
|
@@ -433,7 +401,6 @@ function NeuQuant() {
|
|
|
433
401
|
lengthcount = len;
|
|
434
402
|
samplefac = sample;
|
|
435
403
|
network = new Array(netsize);
|
|
436
|
-
|
|
437
404
|
for (i = 0; i < netsize; i++) {
|
|
438
405
|
network[i] = new Array(4);
|
|
439
406
|
p = network[i];
|
|
@@ -442,27 +409,21 @@ function NeuQuant() {
|
|
|
442
409
|
bias[i] = 0;
|
|
443
410
|
}
|
|
444
411
|
}
|
|
445
|
-
|
|
446
412
|
function colorMap() {
|
|
447
413
|
var map = [];
|
|
448
414
|
var index = new Array(netsize);
|
|
449
|
-
|
|
450
415
|
for (var i = 0; i < netsize; i++) {
|
|
451
416
|
index[network[i][3]] = i;
|
|
452
417
|
}
|
|
453
|
-
|
|
454
418
|
var k = 0;
|
|
455
|
-
|
|
456
419
|
for (var l = 0; l < netsize; l++) {
|
|
457
420
|
var j = index[l];
|
|
458
421
|
map[k++] = network[j][0];
|
|
459
422
|
map[k++] = network[j][1];
|
|
460
423
|
map[k++] = network[j][2];
|
|
461
424
|
}
|
|
462
|
-
|
|
463
425
|
return map;
|
|
464
426
|
}
|
|
465
|
-
|
|
466
427
|
function inxbuild() {
|
|
467
428
|
var i;
|
|
468
429
|
var j;
|
|
@@ -474,15 +435,12 @@ function NeuQuant() {
|
|
|
474
435
|
var startpos;
|
|
475
436
|
previouscol = 0;
|
|
476
437
|
startpos = 0;
|
|
477
|
-
|
|
478
438
|
for (i = 0; i < netsize; i++) {
|
|
479
439
|
p = network[i];
|
|
480
440
|
smallpos = i;
|
|
481
441
|
smallval = p[1];
|
|
482
|
-
|
|
483
442
|
for (j = i + 1; j < netsize; j++) {
|
|
484
443
|
q = network[j];
|
|
485
|
-
|
|
486
444
|
if (q[1] < smallval) {
|
|
487
445
|
smallpos = j;
|
|
488
446
|
smallval = q[1];
|
|
@@ -490,7 +448,6 @@ function NeuQuant() {
|
|
|
490
448
|
}
|
|
491
449
|
|
|
492
450
|
q = network[smallpos];
|
|
493
|
-
|
|
494
451
|
if (i != smallpos) {
|
|
495
452
|
j = q[0];
|
|
496
453
|
q[0] = p[0];
|
|
@@ -505,26 +462,20 @@ function NeuQuant() {
|
|
|
505
462
|
q[3] = p[3];
|
|
506
463
|
p[3] = j;
|
|
507
464
|
}
|
|
508
|
-
|
|
509
465
|
if (smallval != previouscol) {
|
|
510
466
|
netindex[previouscol] = startpos + i >> 1;
|
|
511
|
-
|
|
512
467
|
for (j = previouscol + 1; j < smallval; j++) {
|
|
513
468
|
netindex[j] = i;
|
|
514
469
|
}
|
|
515
|
-
|
|
516
470
|
previouscol = smallval;
|
|
517
471
|
startpos = i;
|
|
518
472
|
}
|
|
519
473
|
}
|
|
520
|
-
|
|
521
474
|
netindex[previouscol] = startpos + maxnetpos >> 1;
|
|
522
|
-
|
|
523
475
|
for (j = previouscol + 1; j < 256; j++) {
|
|
524
476
|
netindex[j] = maxnetpos;
|
|
525
477
|
}
|
|
526
478
|
}
|
|
527
|
-
|
|
528
479
|
function learn() {
|
|
529
480
|
var i;
|
|
530
481
|
var j;
|
|
@@ -540,11 +491,9 @@ function NeuQuant() {
|
|
|
540
491
|
var p;
|
|
541
492
|
var pix;
|
|
542
493
|
var lim;
|
|
543
|
-
|
|
544
494
|
if (lengthcount < minpicturebytes) {
|
|
545
495
|
samplefac = 1;
|
|
546
496
|
}
|
|
547
|
-
|
|
548
497
|
alphadec = 30 + (samplefac - 1) / 3;
|
|
549
498
|
p = thepicture;
|
|
550
499
|
pix = 0;
|
|
@@ -554,15 +503,12 @@ function NeuQuant() {
|
|
|
554
503
|
alpha = initalpha;
|
|
555
504
|
radius = initradius;
|
|
556
505
|
rad = radius >> radiusbiasshift;
|
|
557
|
-
|
|
558
506
|
if (rad <= 1) {
|
|
559
507
|
rad = 0;
|
|
560
508
|
}
|
|
561
|
-
|
|
562
509
|
for (i = 0; i < rad; i++) {
|
|
563
510
|
radpower[i] = alpha * ((rad * rad - i * i) * radbias / (rad * rad));
|
|
564
511
|
}
|
|
565
|
-
|
|
566
512
|
if (lengthcount < minpicturebytes) {
|
|
567
513
|
step = 3;
|
|
568
514
|
} else if (lengthcount % prime1 !== 0) {
|
|
@@ -574,48 +520,37 @@ function NeuQuant() {
|
|
|
574
520
|
} else {
|
|
575
521
|
step = 3 * prime4;
|
|
576
522
|
}
|
|
577
|
-
|
|
578
523
|
i = 0;
|
|
579
|
-
|
|
580
524
|
while (i < samplepixels) {
|
|
581
525
|
b = (p[pix + 0] & 0xff) << netbiasshift;
|
|
582
526
|
g = (p[pix + 1] & 0xff) << netbiasshift;
|
|
583
527
|
r = (p[pix + 2] & 0xff) << netbiasshift;
|
|
584
528
|
j = contest(b, g, r);
|
|
585
529
|
altersingle(alpha, j, b, g, r);
|
|
586
|
-
|
|
587
530
|
if (rad !== 0) {
|
|
588
531
|
alterneigh(rad, j, b, g, r);
|
|
589
532
|
}
|
|
590
|
-
|
|
591
533
|
pix += step;
|
|
592
|
-
|
|
593
534
|
if (pix >= lim) {
|
|
594
535
|
pix -= lengthcount;
|
|
595
536
|
}
|
|
596
|
-
|
|
597
537
|
i++;
|
|
598
|
-
|
|
599
538
|
if (delta === 0) {
|
|
600
539
|
delta = 1;
|
|
601
540
|
}
|
|
602
|
-
|
|
603
541
|
if (i % delta === 0) {
|
|
604
542
|
alpha -= alpha / alphadec;
|
|
605
543
|
radius -= radius / radiusdec;
|
|
606
544
|
rad = radius >> radiusbiasshift;
|
|
607
|
-
|
|
608
545
|
if (rad <= 1) {
|
|
609
546
|
rad = 0;
|
|
610
547
|
}
|
|
611
|
-
|
|
612
548
|
for (j = 0; j < rad; j++) {
|
|
613
549
|
radpower[j] = alpha * ((rad * rad - j * j) * radbias / (rad * rad));
|
|
614
550
|
}
|
|
615
551
|
}
|
|
616
552
|
}
|
|
617
553
|
}
|
|
618
|
-
|
|
619
554
|
function map(b, g, r) {
|
|
620
555
|
var i;
|
|
621
556
|
var j;
|
|
@@ -628,38 +563,28 @@ function NeuQuant() {
|
|
|
628
563
|
best = -1;
|
|
629
564
|
i = netindex[g];
|
|
630
565
|
j = i - 1;
|
|
631
|
-
|
|
632
566
|
while (i < netsize || j >= 0) {
|
|
633
567
|
if (i < netsize) {
|
|
634
568
|
p = network[i];
|
|
635
569
|
dist = p[1] - g;
|
|
636
|
-
|
|
637
570
|
if (dist >= bestd) {
|
|
638
571
|
i = netsize;
|
|
639
572
|
} else {
|
|
640
573
|
i++;
|
|
641
|
-
|
|
642
574
|
if (dist < 0) {
|
|
643
575
|
dist = -dist;
|
|
644
576
|
}
|
|
645
|
-
|
|
646
577
|
a = p[0] - b;
|
|
647
|
-
|
|
648
578
|
if (a < 0) {
|
|
649
579
|
a = -a;
|
|
650
580
|
}
|
|
651
|
-
|
|
652
581
|
dist += a;
|
|
653
|
-
|
|
654
582
|
if (dist < bestd) {
|
|
655
583
|
a = p[2] - r;
|
|
656
|
-
|
|
657
584
|
if (a < 0) {
|
|
658
585
|
a = -a;
|
|
659
586
|
}
|
|
660
|
-
|
|
661
587
|
dist += a;
|
|
662
|
-
|
|
663
588
|
if (dist < bestd) {
|
|
664
589
|
bestd = dist;
|
|
665
590
|
best = p[3];
|
|
@@ -667,37 +592,27 @@ function NeuQuant() {
|
|
|
667
592
|
}
|
|
668
593
|
}
|
|
669
594
|
}
|
|
670
|
-
|
|
671
595
|
if (j >= 0) {
|
|
672
596
|
p = network[j];
|
|
673
597
|
dist = g - p[1];
|
|
674
|
-
|
|
675
598
|
if (dist >= bestd) {
|
|
676
599
|
j = -1;
|
|
677
600
|
} else {
|
|
678
601
|
j--;
|
|
679
|
-
|
|
680
602
|
if (dist < 0) {
|
|
681
603
|
dist = -dist;
|
|
682
604
|
}
|
|
683
|
-
|
|
684
605
|
a = p[0] - b;
|
|
685
|
-
|
|
686
606
|
if (a < 0) {
|
|
687
607
|
a = -a;
|
|
688
608
|
}
|
|
689
|
-
|
|
690
609
|
dist += a;
|
|
691
|
-
|
|
692
610
|
if (dist < bestd) {
|
|
693
611
|
a = p[2] - r;
|
|
694
|
-
|
|
695
612
|
if (a < 0) {
|
|
696
613
|
a = -a;
|
|
697
614
|
}
|
|
698
|
-
|
|
699
615
|
dist += a;
|
|
700
|
-
|
|
701
616
|
if (dist < bestd) {
|
|
702
617
|
bestd = dist;
|
|
703
618
|
best = p[3];
|
|
@@ -706,21 +621,17 @@ function NeuQuant() {
|
|
|
706
621
|
}
|
|
707
622
|
}
|
|
708
623
|
}
|
|
709
|
-
|
|
710
624
|
return best;
|
|
711
625
|
}
|
|
712
|
-
|
|
713
626
|
function process() {
|
|
714
627
|
learn();
|
|
715
628
|
unbiasnet();
|
|
716
629
|
inxbuild();
|
|
717
630
|
return colorMap();
|
|
718
631
|
}
|
|
719
|
-
|
|
720
632
|
function unbiasnet() {
|
|
721
633
|
var i;
|
|
722
634
|
var j;
|
|
723
|
-
|
|
724
635
|
for (i = 0; i < netsize; i++) {
|
|
725
636
|
network[i][0] >>= netbiasshift;
|
|
726
637
|
network[i][1] >>= netbiasshift;
|
|
@@ -728,7 +639,6 @@ function NeuQuant() {
|
|
|
728
639
|
network[i][3] = i;
|
|
729
640
|
}
|
|
730
641
|
}
|
|
731
|
-
|
|
732
642
|
function alterneigh(rad, i, b, g, r) {
|
|
733
643
|
var j;
|
|
734
644
|
var k;
|
|
@@ -738,37 +648,28 @@ function NeuQuant() {
|
|
|
738
648
|
var m;
|
|
739
649
|
var p;
|
|
740
650
|
lo = i - rad;
|
|
741
|
-
|
|
742
651
|
if (lo < -1) {
|
|
743
652
|
lo = -1;
|
|
744
653
|
}
|
|
745
|
-
|
|
746
654
|
hi = i + rad;
|
|
747
|
-
|
|
748
655
|
if (hi > netsize) {
|
|
749
656
|
hi = netsize;
|
|
750
657
|
}
|
|
751
|
-
|
|
752
658
|
j = i + 1;
|
|
753
659
|
k = i - 1;
|
|
754
660
|
m = 1;
|
|
755
|
-
|
|
756
661
|
while (j < hi || k > lo) {
|
|
757
662
|
a = radpower[m++];
|
|
758
|
-
|
|
759
663
|
if (j < hi) {
|
|
760
664
|
p = network[j++];
|
|
761
|
-
|
|
762
665
|
try {
|
|
763
666
|
p[0] -= a * (p[0] - b) / alpharadbias | 0;
|
|
764
667
|
p[1] -= a * (p[1] - g) / alpharadbias | 0;
|
|
765
668
|
p[2] -= a * (p[2] - r) / alpharadbias | 0;
|
|
766
669
|
} catch (e) {}
|
|
767
670
|
}
|
|
768
|
-
|
|
769
671
|
if (k > lo) {
|
|
770
672
|
p = network[k--];
|
|
771
|
-
|
|
772
673
|
try {
|
|
773
674
|
p[0] -= a * (p[0] - b) / alpharadbias | 0;
|
|
774
675
|
p[1] -= a * (p[1] - g) / alpharadbias | 0;
|
|
@@ -777,7 +678,6 @@ function NeuQuant() {
|
|
|
777
678
|
}
|
|
778
679
|
}
|
|
779
680
|
}
|
|
780
|
-
|
|
781
681
|
function altersingle(alpha, i, b, g, r) {
|
|
782
682
|
var n = network[i];
|
|
783
683
|
var alphaMult = alpha / initalpha;
|
|
@@ -785,7 +685,6 @@ function NeuQuant() {
|
|
|
785
685
|
n[1] -= alphaMult * (n[1] - g) | 0;
|
|
786
686
|
n[2] -= alphaMult * (n[2] - r) | 0;
|
|
787
687
|
}
|
|
788
|
-
|
|
789
688
|
function contest(b, g, r) {
|
|
790
689
|
var i;
|
|
791
690
|
var dist;
|
|
@@ -801,80 +700,62 @@ function NeuQuant() {
|
|
|
801
700
|
bestbiasd = bestd;
|
|
802
701
|
bestpos = -1;
|
|
803
702
|
bestbiaspos = bestpos;
|
|
804
|
-
|
|
805
703
|
for (i = 0; i < netsize; i++) {
|
|
806
704
|
n = network[i];
|
|
807
705
|
dist = n[0] - b;
|
|
808
|
-
|
|
809
706
|
if (dist < 0) {
|
|
810
707
|
dist = -dist;
|
|
811
708
|
}
|
|
812
|
-
|
|
813
709
|
a = n[1] - g;
|
|
814
|
-
|
|
815
710
|
if (a < 0) {
|
|
816
711
|
a = -a;
|
|
817
712
|
}
|
|
818
|
-
|
|
819
713
|
dist += a;
|
|
820
714
|
a = n[2] - r;
|
|
821
|
-
|
|
822
715
|
if (a < 0) {
|
|
823
716
|
a = -a;
|
|
824
717
|
}
|
|
825
|
-
|
|
826
718
|
dist += a;
|
|
827
|
-
|
|
828
719
|
if (dist < bestd) {
|
|
829
720
|
bestd = dist;
|
|
830
721
|
bestpos = i;
|
|
831
722
|
}
|
|
832
|
-
|
|
833
723
|
biasdist = dist - (bias[i] >> intbiasshift - netbiasshift);
|
|
834
|
-
|
|
835
724
|
if (biasdist < bestbiasd) {
|
|
836
725
|
bestbiasd = biasdist;
|
|
837
726
|
bestbiaspos = i;
|
|
838
727
|
}
|
|
839
|
-
|
|
840
728
|
betafreq = freq[i] >> betashift;
|
|
841
729
|
freq[i] -= betafreq;
|
|
842
730
|
bias[i] += betafreq << gammashift;
|
|
843
731
|
}
|
|
844
|
-
|
|
845
732
|
freq[bestpos] += beta;
|
|
846
733
|
bias[bestpos] -= betagamma;
|
|
847
734
|
return bestbiaspos;
|
|
848
735
|
}
|
|
849
|
-
|
|
850
736
|
NeuQuantConstructor.apply(this, arguments);
|
|
851
737
|
var exports = {};
|
|
852
738
|
exports.map = map;
|
|
853
739
|
exports.process = process;
|
|
854
740
|
return exports;
|
|
855
741
|
}
|
|
856
|
-
|
|
857
742
|
function workerCode() {
|
|
858
743
|
var self = this;
|
|
859
|
-
|
|
860
744
|
try {
|
|
861
745
|
globalThis.onmessage = function (ev) {
|
|
862
746
|
var data = ev.data || {};
|
|
863
747
|
var response;
|
|
864
|
-
|
|
865
748
|
if (data.gifshot) {
|
|
866
749
|
response = workerMethods.run(data);
|
|
867
750
|
postMessage(response);
|
|
868
751
|
}
|
|
869
752
|
};
|
|
870
753
|
} catch (e) {}
|
|
871
|
-
|
|
872
754
|
var workerMethods = {
|
|
873
755
|
dataToRGB: function dataToRGB(data, width, height) {
|
|
874
756
|
var length = width * height * 4;
|
|
875
757
|
var i = 0;
|
|
876
758
|
var rgb = [];
|
|
877
|
-
|
|
878
759
|
while (i < length) {
|
|
879
760
|
rgb.push(data[i++]);
|
|
880
761
|
rgb.push(data[i++]);
|
|
@@ -887,14 +768,12 @@ function workerCode() {
|
|
|
887
768
|
componentizedPaletteToArray: function componentizedPaletteToArray(paletteRGB) {
|
|
888
769
|
paletteRGB = paletteRGB || [];
|
|
889
770
|
var paletteArray = [];
|
|
890
|
-
|
|
891
771
|
for (var i = 0; i < paletteRGB.length; i += 3) {
|
|
892
772
|
var r = paletteRGB[i];
|
|
893
773
|
var g = paletteRGB[i + 1];
|
|
894
774
|
var b = paletteRGB[i + 2];
|
|
895
775
|
paletteArray.push(r << 16 | g << 8 | b);
|
|
896
776
|
}
|
|
897
|
-
|
|
898
777
|
return paletteArray;
|
|
899
778
|
},
|
|
900
779
|
processFrameWithQuantizer: function processFrameWithQuantizer(imageData, width, height, sampleInterval) {
|
|
@@ -905,14 +784,12 @@ function workerCode() {
|
|
|
905
784
|
var numberPixels = width * height;
|
|
906
785
|
var indexedPixels = new Uint8Array(numberPixels);
|
|
907
786
|
var k = 0;
|
|
908
|
-
|
|
909
787
|
for (var i = 0; i < numberPixels; i++) {
|
|
910
788
|
var r = rgbComponents[k++];
|
|
911
789
|
var g = rgbComponents[k++];
|
|
912
790
|
var b = rgbComponents[k++];
|
|
913
791
|
indexedPixels[i] = nq.map(r, g, b);
|
|
914
792
|
}
|
|
915
|
-
|
|
916
793
|
return {
|
|
917
794
|
pixels: indexedPixels,
|
|
918
795
|
palette: paletteArray
|
|
@@ -931,20 +808,17 @@ function workerCode() {
|
|
|
931
808
|
};
|
|
932
809
|
return workerMethods;
|
|
933
810
|
}
|
|
934
|
-
|
|
935
811
|
function gifWriter(buf, width, height, gopts) {
|
|
936
812
|
var p = 0;
|
|
937
813
|
gopts = gopts === undefined ? {} : gopts;
|
|
938
814
|
var loop_count = gopts.loop === undefined ? null : gopts.loop;
|
|
939
815
|
var global_palette = gopts.palette === undefined ? null : gopts.palette;
|
|
940
816
|
if (width <= 0 || height <= 0 || width > 65535 || height > 65535) throw 'Width/Height invalid.';
|
|
941
|
-
|
|
942
817
|
function check_palette_and_num_colors(palette) {
|
|
943
818
|
var num_colors = palette.length;
|
|
944
819
|
if (num_colors < 2 || num_colors > 256 || num_colors & num_colors - 1) throw 'Invalid code/color length, must be power of 2 and 2 .. 256.';
|
|
945
820
|
return num_colors;
|
|
946
821
|
}
|
|
947
|
-
|
|
948
822
|
buf[p++] = 0x47;
|
|
949
823
|
buf[p++] = 0x49;
|
|
950
824
|
buf[p++] = 0x46;
|
|
@@ -957,10 +831,10 @@ function gifWriter(buf, width, height, gopts) {
|
|
|
957
831
|
buf[p++] = width >> 8 & 0xff;
|
|
958
832
|
buf[p++] = height & 0xff;
|
|
959
833
|
buf[p++] = height >> 8 & 0xff;
|
|
960
|
-
buf[p++] = (global_palette !== null ? 0x80 : 0) |
|
|
834
|
+
buf[p++] = (global_palette !== null ? 0x80 : 0) |
|
|
835
|
+
gp_num_colors_pow2;
|
|
961
836
|
buf[p++] = background;
|
|
962
837
|
buf[p++] = 0;
|
|
963
|
-
|
|
964
838
|
if (loop_count !== null) {
|
|
965
839
|
if (loop_count < 0 || loop_count > 65535) throw 'Loop count invalid.';
|
|
966
840
|
buf[p++] = 0x21;
|
|
@@ -985,46 +859,39 @@ function gifWriter(buf, width, height, gopts) {
|
|
|
985
859
|
}
|
|
986
860
|
|
|
987
861
|
var ended = false;
|
|
988
|
-
|
|
989
862
|
this.addFrame = function (x, y, w, h, indexed_pixels, opts) {
|
|
990
863
|
if (ended === true) {
|
|
991
864
|
--p;
|
|
992
865
|
ended = false;
|
|
993
866
|
}
|
|
994
|
-
|
|
995
867
|
opts = opts === undefined ? {} : opts;
|
|
996
868
|
if (x < 0 || y < 0 || x > 65535 || y > 65535) throw 'x/y invalid.';
|
|
997
869
|
if (w <= 0 || h <= 0 || w > 65535 || h > 65535) throw 'Width/Height invalid.';
|
|
998
870
|
if (indexed_pixels.length < w * h) throw 'Not enough pixels for the frame size.';
|
|
999
871
|
var using_local_palette = true;
|
|
1000
872
|
var palette = opts.palette;
|
|
1001
|
-
|
|
1002
873
|
if (palette === undefined || palette === null) {
|
|
1003
874
|
using_local_palette = false;
|
|
1004
875
|
palette = global_palette;
|
|
1005
876
|
}
|
|
1006
|
-
|
|
1007
877
|
if (palette === undefined || palette === null) throw 'Must supply either a local or global palette.';
|
|
1008
878
|
var num_colors = check_palette_and_num_colors(palette);
|
|
1009
879
|
var min_code_size = 0;
|
|
1010
|
-
|
|
1011
880
|
while (num_colors >>= 1) {
|
|
1012
881
|
++min_code_size;
|
|
1013
882
|
}
|
|
1014
|
-
|
|
1015
883
|
num_colors = 1 << min_code_size;
|
|
1016
884
|
var delay = opts.delay === undefined ? 0 : opts.delay;
|
|
1017
885
|
var disposal = opts.disposal === undefined ? 0 : opts.disposal;
|
|
1018
|
-
if (disposal < 0 || disposal > 3)
|
|
886
|
+
if (disposal < 0 || disposal > 3)
|
|
887
|
+
throw 'Disposal out of range.';
|
|
1019
888
|
var use_transparency = false;
|
|
1020
889
|
var transparent_index = 0;
|
|
1021
|
-
|
|
1022
890
|
if (opts.transparent !== undefined && opts.transparent !== null) {
|
|
1023
891
|
use_transparency = true;
|
|
1024
892
|
transparent_index = opts.transparent;
|
|
1025
893
|
if (transparent_index < 0 || transparent_index >= num_colors) throw 'Transparent color index.';
|
|
1026
894
|
}
|
|
1027
|
-
|
|
1028
895
|
if (disposal !== 0 || use_transparency || delay !== 0) {
|
|
1029
896
|
buf[p++] = 0x21;
|
|
1030
897
|
buf[p++] = 0xf9;
|
|
@@ -1035,7 +902,6 @@ function gifWriter(buf, width, height, gopts) {
|
|
|
1035
902
|
buf[p++] = transparent_index;
|
|
1036
903
|
buf[p++] = 0;
|
|
1037
904
|
}
|
|
1038
|
-
|
|
1039
905
|
buf[p++] = 0x2c;
|
|
1040
906
|
buf[p++] = x & 0xff;
|
|
1041
907
|
buf[p++] = x >> 8 & 0xff;
|
|
@@ -1046,7 +912,6 @@ function gifWriter(buf, width, height, gopts) {
|
|
|
1046
912
|
buf[p++] = h & 0xff;
|
|
1047
913
|
buf[p++] = h >> 8 & 0xff;
|
|
1048
914
|
buf[p++] = using_local_palette === true ? 0x80 | min_code_size - 1 : 0;
|
|
1049
|
-
|
|
1050
915
|
if (using_local_palette === true) {
|
|
1051
916
|
for (var i = 0, il = palette.length; i < il; ++i) {
|
|
1052
917
|
var rgb = palette[i];
|
|
@@ -1055,19 +920,15 @@ function gifWriter(buf, width, height, gopts) {
|
|
|
1055
920
|
buf[p++] = rgb & 0xff;
|
|
1056
921
|
}
|
|
1057
922
|
}
|
|
1058
|
-
|
|
1059
923
|
p = GifWriterOutputLZWCodeStream(buf, p, min_code_size < 2 ? 2 : min_code_size, indexed_pixels);
|
|
1060
924
|
};
|
|
1061
|
-
|
|
1062
925
|
this.end = function () {
|
|
1063
926
|
if (ended === false) {
|
|
1064
927
|
buf[p++] = 0x3b;
|
|
1065
928
|
ended = true;
|
|
1066
929
|
}
|
|
1067
|
-
|
|
1068
930
|
return p;
|
|
1069
931
|
};
|
|
1070
|
-
|
|
1071
932
|
function GifWriterOutputLZWCodeStream(buf, p, min_code_size, index_stream) {
|
|
1072
933
|
buf[p++] = min_code_size;
|
|
1073
934
|
var cur_subblock = p++;
|
|
@@ -1078,50 +939,41 @@ function gifWriter(buf, width, height, gopts) {
|
|
|
1078
939
|
var cur_code_size = min_code_size + 1;
|
|
1079
940
|
var cur_shift = 0;
|
|
1080
941
|
var cur = 0;
|
|
1081
|
-
|
|
1082
942
|
function emit_bytes_to_buffer(bit_block_size) {
|
|
1083
943
|
while (cur_shift >= bit_block_size) {
|
|
1084
944
|
buf[p++] = cur & 0xff;
|
|
1085
945
|
cur >>= 8;
|
|
1086
946
|
cur_shift -= 8;
|
|
1087
|
-
|
|
1088
947
|
if (p === cur_subblock + 256) {
|
|
1089
948
|
buf[cur_subblock] = 255;
|
|
1090
949
|
cur_subblock = p++;
|
|
1091
950
|
}
|
|
1092
951
|
}
|
|
1093
952
|
}
|
|
1094
|
-
|
|
1095
953
|
function emit_code(c) {
|
|
1096
954
|
cur |= c << cur_shift;
|
|
1097
955
|
cur_shift += cur_code_size;
|
|
1098
956
|
emit_bytes_to_buffer(8);
|
|
1099
957
|
}
|
|
1100
|
-
|
|
1101
958
|
var ib_code = index_stream[0] & code_mask;
|
|
1102
959
|
var code_table = {};
|
|
1103
960
|
emit_code(clear_code);
|
|
1104
|
-
|
|
1105
961
|
for (var i = 1, il = index_stream.length; i < il; ++i) {
|
|
1106
962
|
var k = index_stream[i] & code_mask;
|
|
1107
963
|
var cur_key = ib_code << 8 | k;
|
|
1108
964
|
var cur_code = code_table[cur_key];
|
|
1109
|
-
|
|
1110
965
|
if (cur_code === undefined) {
|
|
1111
966
|
cur |= ib_code << cur_shift;
|
|
1112
967
|
cur_shift += cur_code_size;
|
|
1113
|
-
|
|
1114
968
|
while (cur_shift >= 8) {
|
|
1115
969
|
buf[p++] = cur & 0xff;
|
|
1116
970
|
cur >>= 8;
|
|
1117
971
|
cur_shift -= 8;
|
|
1118
|
-
|
|
1119
972
|
if (p === cur_subblock + 256) {
|
|
1120
973
|
buf[cur_subblock] = 255;
|
|
1121
974
|
cur_subblock = p++;
|
|
1122
975
|
}
|
|
1123
976
|
}
|
|
1124
|
-
|
|
1125
977
|
if (next_code === 4096) {
|
|
1126
978
|
emit_code(clear_code);
|
|
1127
979
|
next_code = eoi_code + 1;
|
|
@@ -1141,20 +993,16 @@ function gifWriter(buf, width, height, gopts) {
|
|
|
1141
993
|
emit_code(ib_code);
|
|
1142
994
|
emit_code(eoi_code);
|
|
1143
995
|
emit_bytes_to_buffer(1);
|
|
1144
|
-
|
|
1145
996
|
if (cur_subblock + 1 === p) {
|
|
1146
997
|
buf[cur_subblock] = 0;
|
|
1147
998
|
} else {
|
|
1148
999
|
buf[cur_subblock] = p - cur_subblock - 1;
|
|
1149
1000
|
buf[p++] = 0;
|
|
1150
1001
|
}
|
|
1151
|
-
|
|
1152
1002
|
return p;
|
|
1153
1003
|
}
|
|
1154
1004
|
}
|
|
1155
|
-
|
|
1156
1005
|
var noop$2 = function noop() {};
|
|
1157
|
-
|
|
1158
1006
|
var AnimatedGIF = function AnimatedGIF(options) {
|
|
1159
1007
|
this.canvas = null;
|
|
1160
1008
|
this.ctx = null;
|
|
@@ -1169,7 +1017,6 @@ var AnimatedGIF = function AnimatedGIF(options) {
|
|
|
1169
1017
|
this.options = options;
|
|
1170
1018
|
this.initializeWebWorkers(options);
|
|
1171
1019
|
};
|
|
1172
|
-
|
|
1173
1020
|
AnimatedGIF.prototype = {
|
|
1174
1021
|
workerMethods: workerCode(),
|
|
1175
1022
|
initializeWebWorkers: function initializeWebWorkers(options) {
|
|
@@ -1182,10 +1029,8 @@ AnimatedGIF.prototype = {
|
|
|
1182
1029
|
var x = -1;
|
|
1183
1030
|
var workerError = '';
|
|
1184
1031
|
numWorkers = options.numWorkers;
|
|
1185
|
-
|
|
1186
1032
|
while (++x < numWorkers) {
|
|
1187
1033
|
webWorkerObj = utils.createWebWorker(processFrameWorkerCode);
|
|
1188
|
-
|
|
1189
1034
|
if (utils.isObject(webWorkerObj)) {
|
|
1190
1035
|
objectUrl = webWorkerObj.objectUrl;
|
|
1191
1036
|
webWorker = webWorkerObj.worker;
|
|
@@ -1199,7 +1044,6 @@ AnimatedGIF.prototype = {
|
|
|
1199
1044
|
utils.webWorkerError = Boolean(webWorkerObj);
|
|
1200
1045
|
}
|
|
1201
1046
|
}
|
|
1202
|
-
|
|
1203
1047
|
this.workerError = workerError;
|
|
1204
1048
|
this.canvas = document.createElement('canvas');
|
|
1205
1049
|
this.canvas.width = options.gifWidth;
|
|
@@ -1215,22 +1059,18 @@ AnimatedGIF.prototype = {
|
|
|
1215
1059
|
},
|
|
1216
1060
|
byteMap: function () {
|
|
1217
1061
|
var byteMap = [];
|
|
1218
|
-
|
|
1219
1062
|
for (var i = 0; i < 256; i++) {
|
|
1220
1063
|
byteMap[i] = String.fromCharCode(i);
|
|
1221
1064
|
}
|
|
1222
|
-
|
|
1223
1065
|
return byteMap;
|
|
1224
1066
|
}(),
|
|
1225
1067
|
bufferToString: function bufferToString(buffer) {
|
|
1226
1068
|
var numberValues = buffer.length;
|
|
1227
1069
|
var str = '';
|
|
1228
1070
|
var x = -1;
|
|
1229
|
-
|
|
1230
1071
|
while (++x < numberValues) {
|
|
1231
1072
|
str += this.byteMap[buffer[x]];
|
|
1232
1073
|
}
|
|
1233
|
-
|
|
1234
1074
|
return str;
|
|
1235
1075
|
},
|
|
1236
1076
|
onFrameFinished: function onFrameFinished(progressCallback) {
|
|
@@ -1242,13 +1082,10 @@ AnimatedGIF.prototype = {
|
|
|
1242
1082
|
return !frame.beingProcessed && frame.done;
|
|
1243
1083
|
});
|
|
1244
1084
|
self.numRenderedFrames++;
|
|
1245
|
-
|
|
1246
1085
|
if (hasExistingImages) {
|
|
1247
1086
|
progressCallback(self.numRenderedFrames / frames.length);
|
|
1248
1087
|
}
|
|
1249
|
-
|
|
1250
1088
|
self.onRenderProgressCallback(self.numRenderedFrames * 0.75 / frames.length);
|
|
1251
|
-
|
|
1252
1089
|
if (allDone) {
|
|
1253
1090
|
if (!self.generatingGIF) {
|
|
1254
1091
|
self.generateGIF(frames, self.onRenderCompleteCallback);
|
|
@@ -1268,7 +1105,6 @@ AnimatedGIF.prototype = {
|
|
|
1268
1105
|
var frames = this.frames;
|
|
1269
1106
|
var frame = void 0;
|
|
1270
1107
|
var worker = void 0;
|
|
1271
|
-
|
|
1272
1108
|
var done = function done() {
|
|
1273
1109
|
var ev = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
1274
1110
|
var data = ev.data;
|
|
@@ -1280,19 +1116,15 @@ AnimatedGIF.prototype = {
|
|
|
1280
1116
|
AnimatedGifContext.freeWorker(worker);
|
|
1281
1117
|
AnimatedGifContext.onFrameFinished(progressCallback);
|
|
1282
1118
|
};
|
|
1283
|
-
|
|
1284
1119
|
frame = frames[position];
|
|
1285
|
-
|
|
1286
1120
|
if (frame.beingProcessed || frame.done) {
|
|
1287
1121
|
this.onFrameFinished();
|
|
1288
1122
|
return;
|
|
1289
1123
|
}
|
|
1290
|
-
|
|
1291
1124
|
frame.sampleInterval = sampleInterval;
|
|
1292
1125
|
frame.beingProcessed = true;
|
|
1293
1126
|
frame.gifshot = true;
|
|
1294
1127
|
worker = this.getWorker();
|
|
1295
|
-
|
|
1296
1128
|
if (worker) {
|
|
1297
1129
|
worker.onmessage = done;
|
|
1298
1130
|
worker.postMessage(frame);
|
|
@@ -1304,23 +1136,19 @@ AnimatedGIF.prototype = {
|
|
|
1304
1136
|
},
|
|
1305
1137
|
startRendering: function startRendering(completeCallback) {
|
|
1306
1138
|
this.onRenderCompleteCallback = completeCallback;
|
|
1307
|
-
|
|
1308
1139
|
for (var i = 0; i < this.options.numWorkers && i < this.frames.length; i++) {
|
|
1309
1140
|
this.processFrame(i);
|
|
1310
1141
|
}
|
|
1311
1142
|
},
|
|
1312
1143
|
processNextFrame: function processNextFrame() {
|
|
1313
1144
|
var position = -1;
|
|
1314
|
-
|
|
1315
1145
|
for (var i = 0; i < this.frames.length; i++) {
|
|
1316
1146
|
var frame = this.frames[i];
|
|
1317
|
-
|
|
1318
1147
|
if (!frame.done && !frame.beingProcessed) {
|
|
1319
1148
|
position = i;
|
|
1320
1149
|
break;
|
|
1321
1150
|
}
|
|
1322
1151
|
}
|
|
1323
|
-
|
|
1324
1152
|
if (position >= 0) {
|
|
1325
1153
|
this.processFrame(position);
|
|
1326
1154
|
}
|
|
@@ -1346,7 +1174,6 @@ AnimatedGIF.prototype = {
|
|
|
1346
1174
|
utils.each(frames, function (iterator, frame) {
|
|
1347
1175
|
var framePalette = frame.palette;
|
|
1348
1176
|
onRenderProgressCallback(0.75 + 0.25 * frame.position * 1.0 / frames.length);
|
|
1349
|
-
|
|
1350
1177
|
for (var i = 0; i < frameDuration; i++) {
|
|
1351
1178
|
gifWriter$$1.addFrame(0, 0, width, height, frame.pixels, {
|
|
1352
1179
|
palette: framePalette,
|
|
@@ -1358,7 +1185,6 @@ AnimatedGIF.prototype = {
|
|
|
1358
1185
|
onRenderProgressCallback(1.0);
|
|
1359
1186
|
this.frames = [];
|
|
1360
1187
|
this.generatingGIF = false;
|
|
1361
|
-
|
|
1362
1188
|
if (utils.isFunction(callback)) {
|
|
1363
1189
|
bufferToString = this.bufferToString(buffer);
|
|
1364
1190
|
gif = "data:image/gif;base64,".concat(utils.btoa(bufferToString));
|
|
@@ -1390,11 +1216,9 @@ AnimatedGIF.prototype = {
|
|
|
1390
1216
|
var textYCoordinate = gifshotOptions.textYCoordinate ? gifshotOptions.textYCoordinate : textBaseline === 'top' ? 1 : textBaseline === 'center' ? height / 2 : height;
|
|
1391
1217
|
var font = "".concat(fontWeight, " ").concat(fontSize, " ").concat(fontFamily);
|
|
1392
1218
|
var imageData = void 0;
|
|
1393
|
-
|
|
1394
1219
|
try {
|
|
1395
1220
|
ctx.filter = filter;
|
|
1396
1221
|
ctx.drawImage(element, 0, 0, width, height);
|
|
1397
|
-
|
|
1398
1222
|
if (text) {
|
|
1399
1223
|
ctx.font = font;
|
|
1400
1224
|
ctx.fillStyle = fontColor;
|
|
@@ -1402,7 +1226,6 @@ AnimatedGIF.prototype = {
|
|
|
1402
1226
|
ctx.textBaseline = textBaseline;
|
|
1403
1227
|
ctx.fillText(text, textXCoordinate, textYCoordinate);
|
|
1404
1228
|
}
|
|
1405
|
-
|
|
1406
1229
|
imageData = ctx.getImageData(0, 0, width, height);
|
|
1407
1230
|
self.addFrameImageData(imageData);
|
|
1408
1231
|
} catch (e) {
|
|
@@ -1432,21 +1255,18 @@ AnimatedGIF.prototype = {
|
|
|
1432
1255
|
},
|
|
1433
1256
|
getBase64GIF: function getBase64GIF(completeCallback) {
|
|
1434
1257
|
var self = this;
|
|
1435
|
-
|
|
1436
1258
|
var onRenderComplete = function onRenderComplete(gif) {
|
|
1437
1259
|
self.destroyWorkers();
|
|
1438
1260
|
utils.requestTimeout(function () {
|
|
1439
1261
|
completeCallback(gif);
|
|
1440
1262
|
}, 0);
|
|
1441
1263
|
};
|
|
1442
|
-
|
|
1443
1264
|
self.startRendering(onRenderComplete);
|
|
1444
1265
|
},
|
|
1445
1266
|
destroyWorkers: function destroyWorkers() {
|
|
1446
1267
|
if (this.workerError) {
|
|
1447
1268
|
return;
|
|
1448
1269
|
}
|
|
1449
|
-
|
|
1450
1270
|
var workers = this.workers;
|
|
1451
1271
|
utils.each(workers, function (iterator, workerObj) {
|
|
1452
1272
|
var worker = workerObj.worker;
|
|
@@ -1456,7 +1276,6 @@ AnimatedGIF.prototype = {
|
|
|
1456
1276
|
});
|
|
1457
1277
|
}
|
|
1458
1278
|
};
|
|
1459
|
-
|
|
1460
1279
|
function getBase64GIF(animatedGifInstance, callback) {
|
|
1461
1280
|
animatedGifInstance.getBase64GIF(function (image) {
|
|
1462
1281
|
callback({
|
|
@@ -1467,7 +1286,6 @@ function getBase64GIF(animatedGifInstance, callback) {
|
|
|
1467
1286
|
});
|
|
1468
1287
|
});
|
|
1469
1288
|
}
|
|
1470
|
-
|
|
1471
1289
|
function existingImages() {
|
|
1472
1290
|
var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
1473
1291
|
var self = this;
|
|
@@ -1484,49 +1302,39 @@ function existingImages() {
|
|
|
1484
1302
|
var loadedImagesLength = 0;
|
|
1485
1303
|
var tempImage = void 0;
|
|
1486
1304
|
var ag = void 0;
|
|
1487
|
-
|
|
1488
1305
|
if (errorObj.error) {
|
|
1489
1306
|
return callback(errorObj);
|
|
1490
1307
|
}
|
|
1491
|
-
|
|
1492
1308
|
ag = new AnimatedGIF(options);
|
|
1493
1309
|
utils.each(images, function (index, image) {
|
|
1494
1310
|
var currentImage = image;
|
|
1495
|
-
|
|
1496
1311
|
if (utils.isElement(currentImage)) {
|
|
1497
1312
|
if (options.crossOrigin) {
|
|
1498
1313
|
currentImage.crossOrigin = options.crossOrigin;
|
|
1499
1314
|
}
|
|
1500
|
-
|
|
1501
1315
|
loadedImages[index] = currentImage;
|
|
1502
1316
|
loadedImagesLength += 1;
|
|
1503
|
-
|
|
1504
1317
|
if (loadedImagesLength === imagesLength) {
|
|
1505
1318
|
addLoadedImagesToGif();
|
|
1506
1319
|
}
|
|
1507
1320
|
} else if (utils.isString(currentImage)) {
|
|
1508
1321
|
tempImage = new Image();
|
|
1509
|
-
|
|
1510
1322
|
if (options.crossOrigin) {
|
|
1511
1323
|
tempImage.crossOrigin = options.crossOrigin;
|
|
1512
1324
|
}
|
|
1513
|
-
|
|
1514
1325
|
(function (tempImage) {
|
|
1515
1326
|
if (image.text) {
|
|
1516
1327
|
tempImage.text = image.text;
|
|
1517
1328
|
}
|
|
1518
|
-
|
|
1519
1329
|
tempImage.onerror = function (e) {
|
|
1520
1330
|
var obj = void 0;
|
|
1521
1331
|
--imagesLength;
|
|
1522
|
-
|
|
1523
1332
|
if (imagesLength === 0) {
|
|
1524
1333
|
obj = {};
|
|
1525
1334
|
obj.error = 'None of the requested images was capable of being retrieved';
|
|
1526
1335
|
return callback(obj);
|
|
1527
1336
|
}
|
|
1528
1337
|
};
|
|
1529
|
-
|
|
1530
1338
|
tempImage.onload = function (e) {
|
|
1531
1339
|
if (image.text) {
|
|
1532
1340
|
loadedImages[index] = {
|
|
@@ -1536,19 +1344,14 @@ function existingImages() {
|
|
|
1536
1344
|
} else {
|
|
1537
1345
|
loadedImages[index] = tempImage;
|
|
1538
1346
|
}
|
|
1539
|
-
|
|
1540
1347
|
loadedImagesLength += 1;
|
|
1541
|
-
|
|
1542
1348
|
if (loadedImagesLength === imagesLength) {
|
|
1543
1349
|
addLoadedImagesToGif();
|
|
1544
1350
|
}
|
|
1545
|
-
|
|
1546
1351
|
utils.removeElement(tempImage);
|
|
1547
1352
|
};
|
|
1548
|
-
|
|
1549
1353
|
tempImage.src = currentImage;
|
|
1550
1354
|
})(tempImage);
|
|
1551
|
-
|
|
1552
1355
|
utils.setCSSAttr(tempImage, {
|
|
1553
1356
|
position: 'fixed',
|
|
1554
1357
|
opacity: '0'
|
|
@@ -1556,7 +1359,6 @@ function existingImages() {
|
|
|
1556
1359
|
document.body.appendChild(tempImage);
|
|
1557
1360
|
}
|
|
1558
1361
|
});
|
|
1559
|
-
|
|
1560
1362
|
function addLoadedImagesToGif() {
|
|
1561
1363
|
utils.each(loadedImages, function (index, loadedImage) {
|
|
1562
1364
|
if (loadedImage) {
|
|
@@ -1570,9 +1372,7 @@ function existingImages() {
|
|
|
1570
1372
|
getBase64GIF(ag, callback);
|
|
1571
1373
|
}
|
|
1572
1374
|
}
|
|
1573
|
-
|
|
1574
1375
|
var noop$3 = function noop() {};
|
|
1575
|
-
|
|
1576
1376
|
var screenShot = {
|
|
1577
1377
|
getGIF: function getGIF() {
|
|
1578
1378
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
@@ -1617,35 +1417,28 @@ var screenShot = {
|
|
|
1617
1417
|
var sourceWidth = crop ? videoWidth - crop.scaledWidth : 0;
|
|
1618
1418
|
var sourceY = crop ? Math.floor(crop.scaledHeight / 2) : 0;
|
|
1619
1419
|
var sourceHeight = crop ? videoHeight - crop.scaledHeight : 0;
|
|
1620
|
-
|
|
1621
1420
|
var captureFrames = function captureSingleFrame() {
|
|
1622
1421
|
var framesLeft = pendingFrames - 1;
|
|
1623
|
-
|
|
1624
1422
|
if (savedRenderingContexts.length) {
|
|
1625
1423
|
context.putImageData(savedRenderingContexts[numFrames - pendingFrames], 0, 0);
|
|
1626
1424
|
finishCapture();
|
|
1627
1425
|
} else {
|
|
1628
1426
|
drawVideo();
|
|
1629
1427
|
}
|
|
1630
|
-
|
|
1631
1428
|
function drawVideo() {
|
|
1632
1429
|
try {
|
|
1633
1430
|
if (sourceWidth > videoWidth) {
|
|
1634
1431
|
sourceWidth = videoWidth;
|
|
1635
1432
|
}
|
|
1636
|
-
|
|
1637
1433
|
if (sourceHeight > videoHeight) {
|
|
1638
1434
|
sourceHeight = videoHeight;
|
|
1639
1435
|
}
|
|
1640
|
-
|
|
1641
1436
|
if (sourceX < 0) {
|
|
1642
1437
|
sourceX = 0;
|
|
1643
1438
|
}
|
|
1644
|
-
|
|
1645
1439
|
if (sourceY < 0) {
|
|
1646
1440
|
sourceY = 0;
|
|
1647
1441
|
}
|
|
1648
|
-
|
|
1649
1442
|
context.filter = filter;
|
|
1650
1443
|
context.drawImage(videoElement, sourceX, sourceY, sourceWidth, sourceHeight, 0, 0, gifWidth, gifHeight);
|
|
1651
1444
|
finishCapture();
|
|
@@ -1657,14 +1450,11 @@ var screenShot = {
|
|
|
1657
1450
|
}
|
|
1658
1451
|
}
|
|
1659
1452
|
}
|
|
1660
|
-
|
|
1661
1453
|
function finishCapture() {
|
|
1662
1454
|
var imageData = void 0;
|
|
1663
|
-
|
|
1664
1455
|
if (saveRenderingContexts) {
|
|
1665
1456
|
renderingContextsToSave.push(context.getImageData(0, 0, gifWidth, gifHeight));
|
|
1666
1457
|
}
|
|
1667
|
-
|
|
1668
1458
|
if (text) {
|
|
1669
1459
|
context.font = font;
|
|
1670
1460
|
context.fillStyle = fontColor;
|
|
@@ -1672,16 +1462,13 @@ var screenShot = {
|
|
|
1672
1462
|
context.textBaseline = textBaseline;
|
|
1673
1463
|
context.fillText(text, textXCoordinate, textYCoordinate);
|
|
1674
1464
|
}
|
|
1675
|
-
|
|
1676
1465
|
imageData = context.getImageData(0, 0, gifWidth, gifHeight);
|
|
1677
1466
|
ag.addFrameImageData(imageData);
|
|
1678
1467
|
pendingFrames = framesLeft;
|
|
1679
1468
|
progressCallback((numFrames - pendingFrames) / numFrames);
|
|
1680
|
-
|
|
1681
1469
|
if (framesLeft > 0) {
|
|
1682
1470
|
utils.requestTimeout(captureSingleFrame, waitBetweenFrames);
|
|
1683
1471
|
}
|
|
1684
|
-
|
|
1685
1472
|
if (!pendingFrames) {
|
|
1686
1473
|
ag.getBase64GIF(function (image) {
|
|
1687
1474
|
callback({
|
|
@@ -1699,19 +1486,16 @@ var screenShot = {
|
|
|
1699
1486
|
}
|
|
1700
1487
|
}
|
|
1701
1488
|
};
|
|
1702
|
-
|
|
1703
1489
|
numFrames = numFrames !== undefined ? numFrames : 10;
|
|
1704
1490
|
interval = interval !== undefined ? interval : 0.1;
|
|
1705
1491
|
canvas.width = gifWidth;
|
|
1706
1492
|
canvas.height = gifHeight;
|
|
1707
1493
|
context = canvas.getContext('2d');
|
|
1708
|
-
|
|
1709
1494
|
(function capture() {
|
|
1710
1495
|
if (!savedRenderingContexts.length && videoElement.currentTime === 0) {
|
|
1711
1496
|
utils.requestTimeout(capture, 100);
|
|
1712
1497
|
return;
|
|
1713
1498
|
}
|
|
1714
|
-
|
|
1715
1499
|
captureFrames();
|
|
1716
1500
|
})();
|
|
1717
1501
|
},
|
|
@@ -1727,7 +1511,6 @@ var screenShot = {
|
|
|
1727
1511
|
scaledWidth: 0,
|
|
1728
1512
|
scaledHeight: 0
|
|
1729
1513
|
};
|
|
1730
|
-
|
|
1731
1514
|
if (width > height) {
|
|
1732
1515
|
result.width = Math.round(width * (gifHeight / height)) - gifWidth;
|
|
1733
1516
|
result.scaledWidth = Math.round(result.width * (height / gifHeight));
|
|
@@ -1735,7 +1518,6 @@ var screenShot = {
|
|
|
1735
1518
|
result.height = Math.round(height * (gifWidth / width)) - gifHeight;
|
|
1736
1519
|
result.scaledHeight = Math.round(result.height * (width / gifWidth));
|
|
1737
1520
|
}
|
|
1738
|
-
|
|
1739
1521
|
return result;
|
|
1740
1522
|
}
|
|
1741
1523
|
};
|
|
@@ -1750,11 +1532,9 @@ var videoStream = {
|
|
|
1750
1532
|
var cameraStream = obj.cameraStream;
|
|
1751
1533
|
var completedCallback = obj.completedCallback;
|
|
1752
1534
|
var videoElement = obj.videoElement;
|
|
1753
|
-
|
|
1754
1535
|
if (!videoElement) {
|
|
1755
1536
|
return;
|
|
1756
1537
|
}
|
|
1757
|
-
|
|
1758
1538
|
if (videoElement.videoWidth > 0 && videoElement.videoHeight > 0) {
|
|
1759
1539
|
videoElement.removeEventListener('loadeddata', videoStream.findVideoSize);
|
|
1760
1540
|
completedCallback({
|
|
@@ -1794,11 +1574,9 @@ var videoStream = {
|
|
|
1794
1574
|
var completedCallback = obj.completedCallback;
|
|
1795
1575
|
var streamedCallback = obj.streamedCallback;
|
|
1796
1576
|
var videoElement = obj.videoElement;
|
|
1797
|
-
|
|
1798
1577
|
if (utils.isFunction(streamedCallback)) {
|
|
1799
1578
|
streamedCallback();
|
|
1800
1579
|
}
|
|
1801
|
-
|
|
1802
1580
|
if (existingVideo) {
|
|
1803
1581
|
if (utils.isString(existingVideo)) {
|
|
1804
1582
|
videoElement.src = existingVideo;
|
|
@@ -1807,7 +1585,6 @@ var videoStream = {
|
|
|
1807
1585
|
try {
|
|
1808
1586
|
videoElement.src = utils.URL.createObjectURL(existingVideo);
|
|
1809
1587
|
} catch (e) {}
|
|
1810
|
-
|
|
1811
1588
|
videoElement.innerHTML = "<source src=\"".concat(existingVideo, "\" type=\"").concat(existingVideo.type, "\" />");
|
|
1812
1589
|
}
|
|
1813
1590
|
} else if (videoElement.mozSrcObject) {
|
|
@@ -1820,11 +1597,9 @@ var videoStream = {
|
|
|
1820
1597
|
videoElement.srcObject = cameraStream;
|
|
1821
1598
|
}
|
|
1822
1599
|
}
|
|
1823
|
-
|
|
1824
1600
|
videoElement.play();
|
|
1825
1601
|
utils.requestTimeout(function checkLoadedData() {
|
|
1826
1602
|
checkLoadedData.count = checkLoadedData.count || 0;
|
|
1827
|
-
|
|
1828
1603
|
if (videoStream.loadedData === true) {
|
|
1829
1604
|
videoStream.findVideoSize({
|
|
1830
1605
|
videoElement: videoElement,
|
|
@@ -1834,7 +1609,6 @@ var videoStream = {
|
|
|
1834
1609
|
videoStream.loadedData = false;
|
|
1835
1610
|
} else {
|
|
1836
1611
|
checkLoadedData.count += 1;
|
|
1837
|
-
|
|
1838
1612
|
if (checkLoadedData.count > 10) {
|
|
1839
1613
|
videoStream.findVideoSize({
|
|
1840
1614
|
videoElement: videoElement,
|
|
@@ -1858,22 +1632,18 @@ var videoStream = {
|
|
|
1858
1632
|
var webcamVideoElement = obj.webcamVideoElement;
|
|
1859
1633
|
var videoElement = utils.isElement(existingVideo) ? existingVideo : webcamVideoElement ? webcamVideoElement : document.createElement('video');
|
|
1860
1634
|
var cameraStream = void 0;
|
|
1861
|
-
|
|
1862
1635
|
if (crossOrigin) {
|
|
1863
1636
|
videoElement.crossOrigin = options.crossOrigin;
|
|
1864
1637
|
}
|
|
1865
|
-
|
|
1866
1638
|
videoElement.autoplay = true;
|
|
1867
1639
|
videoElement.loop = true;
|
|
1868
1640
|
videoElement.muted = true;
|
|
1869
1641
|
videoElement.addEventListener('loadeddata', function (event) {
|
|
1870
1642
|
videoStream.loadedData = true;
|
|
1871
|
-
|
|
1872
1643
|
if (options.offset) {
|
|
1873
1644
|
videoElement.currentTime = options.offset;
|
|
1874
1645
|
}
|
|
1875
1646
|
});
|
|
1876
|
-
|
|
1877
1647
|
if (existingVideo) {
|
|
1878
1648
|
videoStream.stream({
|
|
1879
1649
|
videoElement: videoElement,
|
|
@@ -1906,13 +1676,11 @@ var videoStream = {
|
|
|
1906
1676
|
var originalCallback = options.callback;
|
|
1907
1677
|
var webcamVideoElement = options.webcamVideoElement;
|
|
1908
1678
|
var noGetUserMediaSupportTimeout = void 0;
|
|
1909
|
-
|
|
1910
1679
|
if (timeoutLength > 0) {
|
|
1911
1680
|
noGetUserMediaSupportTimeout = utils.requestTimeout(function () {
|
|
1912
1681
|
videoStream.onStreamingTimeout(originalCallback);
|
|
1913
1682
|
}, 10000);
|
|
1914
1683
|
}
|
|
1915
|
-
|
|
1916
1684
|
videoStream.startStreaming({
|
|
1917
1685
|
error: function error() {
|
|
1918
1686
|
originalCallback({
|
|
@@ -1955,32 +1723,26 @@ var videoStream = {
|
|
|
1955
1723
|
var cameraStreamTracks = cameraStream.getTracks ? cameraStream.getTracks() || [] : [];
|
|
1956
1724
|
var hasCameraStreamTracks = Boolean(cameraStreamTracks.length);
|
|
1957
1725
|
var firstCameraStreamTrack = cameraStreamTracks[0];
|
|
1958
|
-
|
|
1959
1726
|
if (!keepCameraOn && hasCameraStreamTracks) {
|
|
1960
1727
|
if (utils.isFunction(firstCameraStreamTrack.stop)) {
|
|
1961
1728
|
firstCameraStreamTrack.stop();
|
|
1962
1729
|
}
|
|
1963
1730
|
}
|
|
1964
|
-
|
|
1965
1731
|
if (utils.isElement(videoElement) && !webcamVideoElement) {
|
|
1966
1732
|
videoElement.pause();
|
|
1967
|
-
|
|
1968
1733
|
if (utils.isFunction(utils.URL.revokeObjectURL) && !utils.webWorkerError) {
|
|
1969
1734
|
if (videoElement.src) {
|
|
1970
1735
|
utils.URL.revokeObjectURL(videoElement.src);
|
|
1971
1736
|
}
|
|
1972
1737
|
}
|
|
1973
|
-
|
|
1974
1738
|
utils.removeElement(videoElement);
|
|
1975
1739
|
}
|
|
1976
1740
|
}
|
|
1977
1741
|
};
|
|
1978
|
-
|
|
1979
1742
|
function stopVideoStreaming(options) {
|
|
1980
1743
|
options = utils.isObject(options) ? options : {};
|
|
1981
1744
|
videoStream.stopVideoStreaming(options);
|
|
1982
1745
|
}
|
|
1983
|
-
|
|
1984
1746
|
function createAndGetGIF(obj, callback) {
|
|
1985
1747
|
var options = obj.options || {};
|
|
1986
1748
|
var images = options.images;
|
|
@@ -2004,14 +1766,11 @@ function createAndGetGIF(obj, callback) {
|
|
|
2004
1766
|
options.videoWidth = videoWidth;
|
|
2005
1767
|
options.videoHeight = videoHeight;
|
|
2006
1768
|
options.cameraStream = cameraStream;
|
|
2007
|
-
|
|
2008
1769
|
if (!utils.isElement(videoElement)) {
|
|
2009
1770
|
return;
|
|
2010
1771
|
}
|
|
2011
|
-
|
|
2012
1772
|
videoElement.width = gifWidth + cropDimensions.width;
|
|
2013
1773
|
videoElement.height = gifHeight + cropDimensions.height;
|
|
2014
|
-
|
|
2015
1774
|
if (!options.webcamVideoElement) {
|
|
2016
1775
|
utils.setCSSAttr(videoElement, {
|
|
2017
1776
|
position: 'fixed',
|
|
@@ -2019,17 +1778,14 @@ function createAndGetGIF(obj, callback) {
|
|
|
2019
1778
|
});
|
|
2020
1779
|
document.body.appendChild(videoElement);
|
|
2021
1780
|
}
|
|
2022
|
-
|
|
2023
1781
|
videoElement.play();
|
|
2024
1782
|
screenShot.getGIF(options, function (obj) {
|
|
2025
1783
|
if ((!images || !images.length) && (!video || !video.length)) {
|
|
2026
1784
|
stopVideoStreaming(obj);
|
|
2027
1785
|
}
|
|
2028
|
-
|
|
2029
1786
|
completeCallback(obj);
|
|
2030
1787
|
});
|
|
2031
1788
|
}
|
|
2032
|
-
|
|
2033
1789
|
function existingVideo() {
|
|
2034
1790
|
var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
2035
1791
|
var callback = obj.callback;
|
|
@@ -2045,15 +1801,12 @@ function existingVideo() {
|
|
|
2045
1801
|
var videoSrc = void 0;
|
|
2046
1802
|
var tempImage = void 0;
|
|
2047
1803
|
var ag = void 0;
|
|
2048
|
-
|
|
2049
1804
|
if (errorObj.error) {
|
|
2050
1805
|
return callback(errorObj);
|
|
2051
1806
|
}
|
|
2052
|
-
|
|
2053
1807
|
if (utils.isElement(existingVideo) && existingVideo.src) {
|
|
2054
1808
|
videoSrc = existingVideo.src;
|
|
2055
1809
|
videoType = utils.getExtension(videoSrc);
|
|
2056
|
-
|
|
2057
1810
|
if (!utils.isSupported.videoCodecs[videoType]) {
|
|
2058
1811
|
return callback(error.messages.videoCodecs);
|
|
2059
1812
|
}
|
|
@@ -2064,14 +1817,12 @@ function existingVideo() {
|
|
|
2064
1817
|
} else {
|
|
2065
1818
|
videoType = videoSrc.substr(videoSrc.lastIndexOf('.') + 1, videoSrc.length);
|
|
2066
1819
|
}
|
|
2067
|
-
|
|
2068
1820
|
if (utils.isSupported.videoCodecs[videoType]) {
|
|
2069
1821
|
existingVideo = videoSrc;
|
|
2070
1822
|
return false;
|
|
2071
1823
|
}
|
|
2072
1824
|
});
|
|
2073
1825
|
}
|
|
2074
|
-
|
|
2075
1826
|
videoStream.startStreaming({
|
|
2076
1827
|
completed: function completed(obj) {
|
|
2077
1828
|
obj.options = options || {};
|
|
@@ -2082,25 +1833,21 @@ function existingVideo() {
|
|
|
2082
1833
|
options: options
|
|
2083
1834
|
});
|
|
2084
1835
|
}
|
|
2085
|
-
|
|
2086
1836
|
function existingWebcam() {
|
|
2087
1837
|
var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
2088
1838
|
var callback = obj.callback;
|
|
2089
1839
|
var lastCameraStream = obj.lastCameraStream;
|
|
2090
1840
|
var options = obj.options;
|
|
2091
1841
|
var webcamVideoElement = obj.webcamVideoElement;
|
|
2092
|
-
|
|
2093
1842
|
if (!isWebCamGIFSupported()) {
|
|
2094
1843
|
return callback(error.validate());
|
|
2095
1844
|
}
|
|
2096
|
-
|
|
2097
1845
|
if (options.savedRenderingContexts.length) {
|
|
2098
1846
|
screenShot.getGIF(options, function (obj) {
|
|
2099
1847
|
callback(obj);
|
|
2100
1848
|
});
|
|
2101
1849
|
return;
|
|
2102
1850
|
}
|
|
2103
|
-
|
|
2104
1851
|
videoStream.startVideoStreaming(function () {
|
|
2105
1852
|
var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
2106
1853
|
obj.options = options || {};
|
|
@@ -2112,15 +1859,12 @@ function existingWebcam() {
|
|
|
2112
1859
|
crossOrigin: options.crossOrigin
|
|
2113
1860
|
});
|
|
2114
1861
|
}
|
|
2115
|
-
|
|
2116
1862
|
function createGIF(userOptions, callback) {
|
|
2117
1863
|
callback = utils.isFunction(userOptions) ? userOptions : callback;
|
|
2118
1864
|
userOptions = utils.isObject(userOptions) ? userOptions : {};
|
|
2119
|
-
|
|
2120
1865
|
if (!utils.isFunction(callback)) {
|
|
2121
1866
|
return;
|
|
2122
1867
|
}
|
|
2123
|
-
|
|
2124
1868
|
var options = utils.normalizeOptions(defaultOptions, userOptions) || {};
|
|
2125
1869
|
var lastCameraStream = userOptions.cameraStream;
|
|
2126
1870
|
var images = options.images;
|
|
@@ -2131,7 +1875,6 @@ function createGIF(userOptions, callback) {
|
|
|
2131
1875
|
gifWidth: Math.floor(options.gifWidth),
|
|
2132
1876
|
gifHeight: Math.floor(options.gifHeight)
|
|
2133
1877
|
});
|
|
2134
|
-
|
|
2135
1878
|
if (imagesLength) {
|
|
2136
1879
|
existingImages({
|
|
2137
1880
|
images: images,
|
|
@@ -2154,15 +1897,12 @@ function createGIF(userOptions, callback) {
|
|
|
2154
1897
|
});
|
|
2155
1898
|
}
|
|
2156
1899
|
}
|
|
2157
|
-
|
|
2158
1900
|
function takeSnapShot(userOptions, callback) {
|
|
2159
1901
|
callback = utils.isFunction(userOptions) ? userOptions : callback;
|
|
2160
1902
|
userOptions = utils.isObject(userOptions) ? userOptions : {};
|
|
2161
|
-
|
|
2162
1903
|
if (!utils.isFunction(callback)) {
|
|
2163
1904
|
return;
|
|
2164
1905
|
}
|
|
2165
|
-
|
|
2166
1906
|
var mergedOptions = utils.normalizeOptions(defaultOptions, userOptions);
|
|
2167
1907
|
var options = utils.normalizeOptions(mergedOptions, {
|
|
2168
1908
|
interval: 0.1,
|
|
@@ -2172,7 +1912,6 @@ function takeSnapShot(userOptions, callback) {
|
|
|
2172
1912
|
});
|
|
2173
1913
|
createGIF(options, callback);
|
|
2174
1914
|
}
|
|
2175
|
-
|
|
2176
1915
|
var API = {
|
|
2177
1916
|
utils: utils$2,
|
|
2178
1917
|
error: error$2,
|