@remotion/gif 3.3.25 → 3.3.27
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/Gif.d.ts +1 -0
- package/dist/parser/deinterlace.d.ts +4 -0
- package/dist/parser/deinterlace.js +26 -0
- package/dist/parser/lzw.d.ts +5 -0
- package/dist/parser/lzw.js +119 -0
- package/package.json +5 -5
package/dist/Gif.d.ts
CHANGED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Deinterlace function from https://github.com/shachaf/jsgif
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.deinterlace = void 0;
|
|
7
|
+
const deinterlace = (pixels, width) => {
|
|
8
|
+
const newPixels = new Array(pixels.length);
|
|
9
|
+
const rows = pixels.length / width;
|
|
10
|
+
const cpRow = function (toRow, fromRow) {
|
|
11
|
+
const fromPixels = pixels.slice(fromRow * width, (fromRow + 1) * width);
|
|
12
|
+
newPixels.splice.apply(newPixels, [toRow * width, width].concat(fromPixels));
|
|
13
|
+
};
|
|
14
|
+
// See appendix E.
|
|
15
|
+
const offsets = [0, 4, 2, 1];
|
|
16
|
+
const steps = [8, 8, 4, 2];
|
|
17
|
+
let fromRow = 0;
|
|
18
|
+
for (let pass = 0; pass < 4; pass++) {
|
|
19
|
+
for (let toRow = offsets[pass]; toRow < rows; toRow += steps[pass]) {
|
|
20
|
+
cpRow(toRow, fromRow);
|
|
21
|
+
fromRow++;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return newPixels;
|
|
25
|
+
};
|
|
26
|
+
exports.deinterlace = deinterlace;
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* javascript port of java LZW decompression
|
|
4
|
+
* Original java author url: https://gist.github.com/devunwired/4479231
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.lzw = void 0;
|
|
8
|
+
const lzw = (minCodeSize, data, pixelCount) => {
|
|
9
|
+
const MAX_STACK_SIZE = 4096;
|
|
10
|
+
const nullCode = -1;
|
|
11
|
+
const npix = pixelCount;
|
|
12
|
+
let available;
|
|
13
|
+
let clear;
|
|
14
|
+
let code_mask;
|
|
15
|
+
let code_size;
|
|
16
|
+
let end_of_information;
|
|
17
|
+
let in_code;
|
|
18
|
+
let old_code;
|
|
19
|
+
var bits;
|
|
20
|
+
let code;
|
|
21
|
+
let i;
|
|
22
|
+
var datum;
|
|
23
|
+
let data_size;
|
|
24
|
+
var first;
|
|
25
|
+
var top;
|
|
26
|
+
var bi;
|
|
27
|
+
var pi;
|
|
28
|
+
const dstPixels = new Array(pixelCount);
|
|
29
|
+
const prefix = new Array(MAX_STACK_SIZE);
|
|
30
|
+
const suffix = new Array(MAX_STACK_SIZE);
|
|
31
|
+
const pixelStack = new Array(MAX_STACK_SIZE + 1);
|
|
32
|
+
// Initialize GIF data stream decoder.
|
|
33
|
+
data_size = minCodeSize;
|
|
34
|
+
clear = 1 << data_size;
|
|
35
|
+
end_of_information = clear + 1;
|
|
36
|
+
available = clear + 2;
|
|
37
|
+
old_code = nullCode;
|
|
38
|
+
code_size = data_size + 1;
|
|
39
|
+
code_mask = (1 << code_size) - 1;
|
|
40
|
+
for (code = 0; code < clear; code++) {
|
|
41
|
+
prefix[code] = 0;
|
|
42
|
+
suffix[code] = code;
|
|
43
|
+
}
|
|
44
|
+
// Decode GIF pixel stream.
|
|
45
|
+
var datum;
|
|
46
|
+
var bits;
|
|
47
|
+
let count;
|
|
48
|
+
var first;
|
|
49
|
+
var top;
|
|
50
|
+
var pi;
|
|
51
|
+
var bi;
|
|
52
|
+
datum = bits = count = first = top = pi = bi = 0;
|
|
53
|
+
for (i = 0; i < npix;) {
|
|
54
|
+
if (top === 0) {
|
|
55
|
+
if (bits < code_size) {
|
|
56
|
+
// get the next byte
|
|
57
|
+
datum += data[bi] << bits;
|
|
58
|
+
bits += 8;
|
|
59
|
+
bi++;
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
// Get the next code.
|
|
63
|
+
code = datum & code_mask;
|
|
64
|
+
datum >>= code_size;
|
|
65
|
+
bits -= code_size;
|
|
66
|
+
// Interpret the code
|
|
67
|
+
if (code > available || code == end_of_information) {
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
if (code == clear) {
|
|
71
|
+
// Reset decoder.
|
|
72
|
+
code_size = data_size + 1;
|
|
73
|
+
code_mask = (1 << code_size) - 1;
|
|
74
|
+
available = clear + 2;
|
|
75
|
+
old_code = nullCode;
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
if (old_code == nullCode) {
|
|
79
|
+
pixelStack[top++] = suffix[code];
|
|
80
|
+
old_code = code;
|
|
81
|
+
first = code;
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
in_code = code;
|
|
85
|
+
if (code == available) {
|
|
86
|
+
pixelStack[top++] = first;
|
|
87
|
+
code = old_code;
|
|
88
|
+
}
|
|
89
|
+
while (code > clear) {
|
|
90
|
+
pixelStack[top++] = suffix[code];
|
|
91
|
+
code = prefix[code];
|
|
92
|
+
}
|
|
93
|
+
first = suffix[code] & 0xff;
|
|
94
|
+
pixelStack[top++] = first;
|
|
95
|
+
// add a new string to the table, but only if space is available
|
|
96
|
+
// if not, just continue with current table until a clear code is found
|
|
97
|
+
// (deferred clear code implementation as per GIF spec)
|
|
98
|
+
if (available < MAX_STACK_SIZE) {
|
|
99
|
+
prefix[available] = old_code;
|
|
100
|
+
suffix[available] = first;
|
|
101
|
+
available++;
|
|
102
|
+
if ((available & code_mask) === 0 && available < MAX_STACK_SIZE) {
|
|
103
|
+
code_size++;
|
|
104
|
+
code_mask += available;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
old_code = in_code;
|
|
108
|
+
}
|
|
109
|
+
// Pop a pixel off the pixel stack.
|
|
110
|
+
top--;
|
|
111
|
+
dstPixels[pi++] = pixelStack[top];
|
|
112
|
+
i++;
|
|
113
|
+
}
|
|
114
|
+
for (i = pi; i < npix; i++) {
|
|
115
|
+
dstPixels[i] = 0; // clear missing pixels
|
|
116
|
+
}
|
|
117
|
+
return dstPixels;
|
|
118
|
+
};
|
|
119
|
+
exports.lzw = lzw;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remotion/gif",
|
|
3
|
-
"version": "3.3.
|
|
3
|
+
"version": "3.3.27",
|
|
4
4
|
"description": "Gif component for remotion",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"repository": {
|
|
@@ -23,13 +23,13 @@
|
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"gifuct-js": "2.1.2",
|
|
25
25
|
"lru_map": "0.4.1",
|
|
26
|
-
"remotion": "3.3.
|
|
26
|
+
"remotion": "3.3.27"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@jonny/eslint-config": "3.0.266",
|
|
30
30
|
"@types/node": "^16.7.5",
|
|
31
|
-
"@types/react": "18.0.
|
|
32
|
-
"@types/react-dom": "18.0.
|
|
31
|
+
"@types/react": "18.0.26",
|
|
32
|
+
"@types/react-dom": "18.0.10",
|
|
33
33
|
"esbuild": "0.16.12",
|
|
34
34
|
"eslint": "8.25.0",
|
|
35
35
|
"prettier": "2.6.2",
|
|
@@ -53,5 +53,5 @@
|
|
|
53
53
|
"publishConfig": {
|
|
54
54
|
"access": "public"
|
|
55
55
|
},
|
|
56
|
-
"gitHead": "
|
|
56
|
+
"gitHead": "5dfc0dfa0df9592a358127a9aea9219244e6807a"
|
|
57
57
|
}
|