databender 2.0.0-alpha.1 → 2.0.0-alpha.3
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/databender.js +35 -1
- package/index.js +35 -1
- package/package.json +1 -1
- package/tags +27 -19
package/dist/databender.js
CHANGED
|
@@ -45,7 +45,10 @@ var Databender = (function () {
|
|
|
45
45
|
this.previousConfig = this.config;
|
|
46
46
|
this.effectsChain = effectsChain ? asArray(effectsChain) : null;
|
|
47
47
|
this.sourceParams = sourceParams ? asArray(sourceParams) : null;
|
|
48
|
-
this.chainMode = chainMode
|
|
48
|
+
this.chainMode = this.config.chainMode;
|
|
49
|
+
this.maxConcurrentRenders = 2;
|
|
50
|
+
this.activeRenderCount = 0;
|
|
51
|
+
this.renderQueue = [];
|
|
49
52
|
|
|
50
53
|
this.convert = function(image) {
|
|
51
54
|
if (image instanceof Image || image instanceof HTMLVideoElement) {
|
|
@@ -88,10 +91,38 @@ var Databender = (function () {
|
|
|
88
91
|
if (!this.configKeys.length || !this.config[effect]) {
|
|
89
92
|
return;
|
|
90
93
|
}
|
|
94
|
+
if (typeof param === 'undefined') {
|
|
95
|
+
this.config[effect] = value;
|
|
96
|
+
if (effect === 'chainMode') {
|
|
97
|
+
this.chainMode = value;
|
|
98
|
+
}
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
91
101
|
this.config[effect][param] = value;
|
|
92
102
|
};
|
|
93
103
|
|
|
94
104
|
this.render = async function(buffer, bypass = false) {
|
|
105
|
+
const acquireRenderSlot = async () => {
|
|
106
|
+
if (this.activeRenderCount < this.maxConcurrentRenders) {
|
|
107
|
+
this.activeRenderCount += 1;
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
await new Promise((resolve) => {
|
|
111
|
+
this.renderQueue.push({ resolve });
|
|
112
|
+
});
|
|
113
|
+
this.activeRenderCount += 1;
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
const releaseRenderSlot = () => {
|
|
117
|
+
this.activeRenderCount = Math.max(0, this.activeRenderCount - 1);
|
|
118
|
+
const next = this.renderQueue.shift();
|
|
119
|
+
if (next && isFunction(next.resolve)) {
|
|
120
|
+
next.resolve();
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
await acquireRenderSlot();
|
|
125
|
+
try {
|
|
95
126
|
|
|
96
127
|
// Create offlineAudioCtx that will house our rendered buffer
|
|
97
128
|
var offlineAudioCtx = new OfflineAudioContext(this.channels, buffer.length * this.channels, this.audioCtx.sampleRate);
|
|
@@ -189,6 +220,9 @@ var Databender = (function () {
|
|
|
189
220
|
this.previousConfig = this.config;
|
|
190
221
|
// Kick off the render, callback will contain rendered buffer in event
|
|
191
222
|
return offlineAudioCtx.startRendering();
|
|
223
|
+
} finally {
|
|
224
|
+
releaseRenderSlot();
|
|
225
|
+
}
|
|
192
226
|
};
|
|
193
227
|
|
|
194
228
|
this.draw = function(buffer, context, sourceX = 0, sourceY = 0, x = 0, y = 0, sourceWidth = this.imageData.width, sourceHeight = this.imageData.height, targetWidth = window.innerWidth, targetHeight = window.innerHeight) {
|
package/index.js
CHANGED
|
@@ -43,7 +43,10 @@ export default class Databender {
|
|
|
43
43
|
this.previousConfig = this.config;
|
|
44
44
|
this.effectsChain = effectsChain ? asArray(effectsChain) : null;
|
|
45
45
|
this.sourceParams = sourceParams ? asArray(sourceParams) : null;
|
|
46
|
-
this.chainMode = chainMode
|
|
46
|
+
this.chainMode = this.config.chainMode;
|
|
47
|
+
this.maxConcurrentRenders = 2;
|
|
48
|
+
this.activeRenderCount = 0;
|
|
49
|
+
this.renderQueue = [];
|
|
47
50
|
|
|
48
51
|
this.convert = function(image) {
|
|
49
52
|
if (image instanceof Image || image instanceof HTMLVideoElement) {
|
|
@@ -86,10 +89,38 @@ export default class Databender {
|
|
|
86
89
|
if (!this.configKeys.length || !this.config[effect]) {
|
|
87
90
|
return;
|
|
88
91
|
}
|
|
92
|
+
if (typeof param === 'undefined') {
|
|
93
|
+
this.config[effect] = value;
|
|
94
|
+
if (effect === 'chainMode') {
|
|
95
|
+
this.chainMode = value;
|
|
96
|
+
}
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
89
99
|
this.config[effect][param] = value;
|
|
90
100
|
};
|
|
91
101
|
|
|
92
102
|
this.render = async function(buffer, bypass = false) {
|
|
103
|
+
const acquireRenderSlot = async () => {
|
|
104
|
+
if (this.activeRenderCount < this.maxConcurrentRenders) {
|
|
105
|
+
this.activeRenderCount += 1;
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
await new Promise((resolve) => {
|
|
109
|
+
this.renderQueue.push({ resolve });
|
|
110
|
+
});
|
|
111
|
+
this.activeRenderCount += 1;
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
const releaseRenderSlot = () => {
|
|
115
|
+
this.activeRenderCount = Math.max(0, this.activeRenderCount - 1);
|
|
116
|
+
const next = this.renderQueue.shift();
|
|
117
|
+
if (next && isFunction(next.resolve)) {
|
|
118
|
+
next.resolve();
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
await acquireRenderSlot();
|
|
123
|
+
try {
|
|
93
124
|
|
|
94
125
|
// Create offlineAudioCtx that will house our rendered buffer
|
|
95
126
|
var offlineAudioCtx = new OfflineAudioContext(this.channels, buffer.length * this.channels, this.audioCtx.sampleRate);
|
|
@@ -187,6 +218,9 @@ export default class Databender {
|
|
|
187
218
|
this.previousConfig = this.config;
|
|
188
219
|
// Kick off the render, callback will contain rendered buffer in event
|
|
189
220
|
return offlineAudioCtx.startRendering();
|
|
221
|
+
} finally {
|
|
222
|
+
releaseRenderSlot();
|
|
223
|
+
}
|
|
190
224
|
};
|
|
191
225
|
|
|
192
226
|
this.draw = function(buffer, context, sourceX = 0, sourceY = 0, x = 0, y = 0, sourceWidth = this.imageData.width, sourceHeight = this.imageData.height, targetWidth = window.innerWidth, targetHeight = window.innerHeight) {
|
package/package.json
CHANGED
package/tags
CHANGED
|
@@ -142,12 +142,14 @@ Getting Started README.md /^## Getting Started$/;" s chapter:Databender
|
|
|
142
142
|
License README.md /^## License$/;" s chapter:Databender
|
|
143
143
|
Prerequisites README.md /^### Prerequisites$/;" S section:Databender""Getting Started
|
|
144
144
|
Source parameters README.md /^### Source parameters$/;" S section:Databender""Getting Started
|
|
145
|
+
acquireRenderSlot dist/databender.js /^ const acquireRenderSlot = async () => {$/;" f method:Databender.Databender.constructor.render
|
|
146
|
+
acquireRenderSlot index.js /^ const acquireRenderSlot = async () => {$/;" f method:Databender.constructor.render
|
|
145
147
|
anonymousObject48d51f9d0205 dist/databender.js /^ constructor({$/;" v class:Databender.Databender
|
|
146
|
-
|
|
147
|
-
|
|
148
|
+
anonymousObject48d51f9d0a05 dist/databender.js /^ resolvedNode = resolvedNode({ context: offlineAudioCtx, source: buff/;" v function:Databender.Databender.constructor.render.resolveEffectsChain
|
|
149
|
+
anonymousObject48d51f9d0c05 dist/databender.js /^ result = result({ context: offlineAudioCtx, source: bufferSource, co/;" v function:Databender.Databender.constructor.render.applySourceParams
|
|
148
150
|
anonymousObject66e3de480105 index.js /^ constructor({$/;" v class:Databender
|
|
149
|
-
|
|
150
|
-
|
|
151
|
+
anonymousObject66e3de480905 index.js /^ resolvedNode = resolvedNode({ context: offlineAudioCtx, source: bufferSo/;" v function:Databender.constructor.render.resolveEffectsChain
|
|
152
|
+
anonymousObject66e3de480b05 index.js /^ result = result({ context: offlineAudioCtx, source: bufferSource, config/;" v function:Databender.constructor.render.applySourceParams
|
|
151
153
|
anonymousObject6c12f9b20105 rollup.config.js /^ resolve({$/;" v
|
|
152
154
|
anonymousObject6c12f9b20205 rollup.config.js /^ commonjs({$/;" v
|
|
153
155
|
applySourceParams dist/databender.js /^ var applySourceParams = async function() {$/;" f method:Databender.Databender.constructor.render
|
|
@@ -166,20 +168,20 @@ build package.json /^ "build": "rollup -c",$/;" s object:scripts
|
|
|
166
168
|
chainMode dist/databender.js /^ chainMode = 'series',$/;" p variable:Databender.Databender.anonymousObject48d51f9d0205
|
|
167
169
|
chainMode index.js /^ chainMode = 'series',$/;" p variable:Databender.anonymousObject66e3de480105
|
|
168
170
|
commondir package-lock.json /^ "commondir": "^1.0.1",$/;" s object:packages.node_modules/@rollup/plugin-commonjs.dependencies
|
|
169
|
-
config dist/databender.js /^ resolvedNode = resolvedNode({ context: offlineAudioCtx, source: buff/;" p variable:Databender.Databender.constructor.render.resolveEffectsChain.
|
|
170
|
-
config dist/databender.js /^ result = result({ context: offlineAudioCtx, source: bufferSource, co/;" p variable:Databender.Databender.constructor.render.applySourceParams.
|
|
171
|
+
config dist/databender.js /^ resolvedNode = resolvedNode({ context: offlineAudioCtx, source: buff/;" p variable:Databender.Databender.constructor.render.resolveEffectsChain.anonymousObject48d51f9d0a05
|
|
172
|
+
config dist/databender.js /^ result = result({ context: offlineAudioCtx, source: bufferSource, co/;" p variable:Databender.Databender.constructor.render.applySourceParams.anonymousObject48d51f9d0c05
|
|
171
173
|
config dist/databender.js /^ config = {},$/;" p variable:Databender.Databender.anonymousObject48d51f9d0205
|
|
172
|
-
config index.js /^ resolvedNode = resolvedNode({ context: offlineAudioCtx, source: bufferSo/;" p variable:Databender.constructor.render.resolveEffectsChain.
|
|
173
|
-
config index.js /^ result = result({ context: offlineAudioCtx, source: bufferSource, config/;" p variable:Databender.constructor.render.applySourceParams.
|
|
174
|
+
config index.js /^ resolvedNode = resolvedNode({ context: offlineAudioCtx, source: bufferSo/;" p variable:Databender.constructor.render.resolveEffectsChain.anonymousObject66e3de480905
|
|
175
|
+
config index.js /^ result = result({ context: offlineAudioCtx, source: bufferSource, config/;" p variable:Databender.constructor.render.applySourceParams.anonymousObject66e3de480b05
|
|
174
176
|
config index.js /^ config = {},$/;" p variable:Databender.anonymousObject66e3de480105
|
|
175
177
|
configHasChanged dist/databender.js /^ this.configHasChanged = function() {$/;" m method:Databender.Databender.constructor
|
|
176
178
|
configHasChanged index.js /^ this.configHasChanged = function() {$/;" m method:Databender.constructor
|
|
177
179
|
constructor dist/databender.js /^ constructor({$/;" m class:Databender.Databender
|
|
178
180
|
constructor index.js /^ constructor({$/;" m class:Databender
|
|
179
|
-
context dist/databender.js /^ resolvedNode = resolvedNode({ context: offlineAudioCtx, source: buff/;" p variable:Databender.Databender.constructor.render.resolveEffectsChain.
|
|
180
|
-
context dist/databender.js /^ result = result({ context: offlineAudioCtx, source: bufferSource, co/;" p variable:Databender.Databender.constructor.render.applySourceParams.
|
|
181
|
-
context index.js /^ resolvedNode = resolvedNode({ context: offlineAudioCtx, source: bufferSo/;" p variable:Databender.constructor.render.resolveEffectsChain.
|
|
182
|
-
context index.js /^ result = result({ context: offlineAudioCtx, source: bufferSource, config/;" p variable:Databender.constructor.render.applySourceParams.
|
|
181
|
+
context dist/databender.js /^ resolvedNode = resolvedNode({ context: offlineAudioCtx, source: buff/;" p variable:Databender.Databender.constructor.render.resolveEffectsChain.anonymousObject48d51f9d0a05
|
|
182
|
+
context dist/databender.js /^ result = result({ context: offlineAudioCtx, source: bufferSource, co/;" p variable:Databender.Databender.constructor.render.applySourceParams.anonymousObject48d51f9d0c05
|
|
183
|
+
context index.js /^ resolvedNode = resolvedNode({ context: offlineAudioCtx, source: bufferSo/;" p variable:Databender.constructor.render.resolveEffectsChain.anonymousObject66e3de480905
|
|
184
|
+
context index.js /^ result = result({ context: offlineAudioCtx, source: bufferSource, config/;" p variable:Databender.constructor.render.applySourceParams.anonymousObject66e3de480b05
|
|
183
185
|
convert dist/databender.js /^ this.convert = function(image) {$/;" m method:Databender.Databender.constructor
|
|
184
186
|
convert index.js /^ this.convert = function(image) {$/;" m method:Databender.constructor
|
|
185
187
|
cpu package-lock.json /^ "cpu": [$/;" a object:packages.node_modules/@rollup/rollup-android-arm-eabi
|
|
@@ -528,10 +530,16 @@ picomatch package-lock.json /^ "picomatch": "^4.0.2"$/;" s object:package
|
|
|
528
530
|
picomatch package-lock.json /^ "picomatch": {$/;" o object:packages.node_modules/fdir.peerDependenciesMeta
|
|
529
531
|
preferBuiltins rollup.config.js /^ preferBuiltins: false, $/;" p variable:anonymousObject6c12f9b20105
|
|
530
532
|
prepublish package.json /^ "prepublish": "npm run build",$/;" s object:scripts
|
|
533
|
+
releaseRenderSlot dist/databender.js /^ const releaseRenderSlot = () => {$/;" f method:Databender.Databender.constructor.render
|
|
534
|
+
releaseRenderSlot index.js /^ const releaseRenderSlot = () => {$/;" f method:Databender.constructor.render
|
|
531
535
|
render dist/databender.js /^ this.render = async function(buffer, bypass = false) {$/;" m method:Databender.Databender.constructor
|
|
532
536
|
render index.js /^ this.render = async function(buffer, bypass = false) {$/;" m method:Databender.constructor
|
|
537
|
+
renderQueue dist/databender.js /^ this.renderQueue = [];$/;" p method:Databender.Databender.constructor
|
|
538
|
+
renderQueue index.js /^ this.renderQueue = [];$/;" p method:Databender.constructor
|
|
533
539
|
requireReturnsDefault rollup.config.js /^ requireReturnsDefault: 'auto', $/;" p variable:anonymousObject6c12f9b20205
|
|
534
540
|
requires package-lock.json /^ "requires": true,$/;" b
|
|
541
|
+
resolve dist/databender.js /^ this.renderQueue.push({ resolve });$/;" M variable:
|
|
542
|
+
resolve index.js /^ this.renderQueue.push({ resolve });$/;" M variable:
|
|
535
543
|
resolve package-lock.json /^ "resolve": "^1.22.1"$/;" s object:packages.node_modules/@rollup/plugin-node-resolve.dependencies
|
|
536
544
|
resolve package-lock.json /^ "resolve": "bin\/resolve"$/;" s object:packages.node_modules/resolve.bin
|
|
537
545
|
resolveEffectsChain dist/databender.js /^ var resolveEffectsChain = async function() {$/;" f method:Databender.Databender.constructor.render
|
|
@@ -591,10 +599,10 @@ rollup package-lock.json /^ "rollup": {$/;" o object:packages.node_module
|
|
|
591
599
|
rollup package-lock.json /^ "rollup": {$/;" o object:packages.node_modules/@rollup/pluginutils.peerDependenciesMeta
|
|
592
600
|
rollup package.json /^ "rollup": "4.52.4"$/;" s object:devDependencies
|
|
593
601
|
scripts package.json /^ "scripts": {$/;" o
|
|
594
|
-
source dist/databender.js /^ resolvedNode = resolvedNode({ context: offlineAudioCtx, source: buff/;" p variable:Databender.Databender.constructor.render.resolveEffectsChain.
|
|
595
|
-
source dist/databender.js /^ result = result({ context: offlineAudioCtx, source: bufferSource, co/;" p variable:Databender.Databender.constructor.render.applySourceParams.
|
|
596
|
-
source index.js /^ resolvedNode = resolvedNode({ context: offlineAudioCtx, source: bufferSo/;" p variable:Databender.constructor.render.resolveEffectsChain.
|
|
597
|
-
source index.js /^ result = result({ context: offlineAudioCtx, source: bufferSource, config/;" p variable:Databender.constructor.render.applySourceParams.
|
|
602
|
+
source dist/databender.js /^ resolvedNode = resolvedNode({ context: offlineAudioCtx, source: buff/;" p variable:Databender.Databender.constructor.render.resolveEffectsChain.anonymousObject48d51f9d0a05
|
|
603
|
+
source dist/databender.js /^ result = result({ context: offlineAudioCtx, source: bufferSource, co/;" p variable:Databender.Databender.constructor.render.applySourceParams.anonymousObject48d51f9d0c05
|
|
604
|
+
source index.js /^ resolvedNode = resolvedNode({ context: offlineAudioCtx, source: bufferSo/;" p variable:Databender.constructor.render.resolveEffectsChain.anonymousObject66e3de480905
|
|
605
|
+
source index.js /^ result = result({ context: offlineAudioCtx, source: bufferSource, config/;" p variable:Databender.constructor.render.applySourceParams.anonymousObject66e3de480b05
|
|
598
606
|
sourceParams dist/databender.js /^ sourceParams = null,$/;" p variable:Databender.Databender.anonymousObject48d51f9d0205
|
|
599
607
|
sourceParams index.js /^ sourceParams = null,$/;" p variable:Databender.anonymousObject66e3de480105
|
|
600
608
|
supports-preserve-symlinks-flag package-lock.json /^ "supports-preserve-symlinks-flag": "^1.0.0"$/;" s object:packages.node_modules/resolve.dependencies
|
|
@@ -618,7 +626,7 @@ version package-lock.json /^ "version": "1.20.2",$/;" s object:packages.nod
|
|
|
618
626
|
version package-lock.json /^ "version": "1.22.10",$/;" s object:packages.node_modules/resolve
|
|
619
627
|
version package-lock.json /^ "version": "1.5.5",$/;" s object:packages.node_modules/@jridgewell/sourcemap-codec
|
|
620
628
|
version package-lock.json /^ "version": "16.0.3",$/;" s object:packages.node_modules/@rollup/plugin-node-resolve
|
|
621
|
-
version package-lock.json /^ "version": "2.0.0-alpha.
|
|
629
|
+
version package-lock.json /^ "version": "2.0.0-alpha.2",$/;" s object:packages.
|
|
622
630
|
version package-lock.json /^ "version": "2.0.2",$/;" s object:packages.node_modules/@rollup/plugin-commonjs/node_modules/estree-walker
|
|
623
631
|
version package-lock.json /^ "version": "2.0.2",$/;" s object:packages.node_modules/@rollup/pluginutils/node_modules/estree-walker
|
|
624
632
|
version package-lock.json /^ "version": "2.0.2",$/;" s object:packages.node_modules/hasown
|
|
@@ -652,5 +660,5 @@ version package-lock.json /^ "version": "4.52.4",$/;" s object:packages.nod
|
|
|
652
660
|
version package-lock.json /^ "version": "4.52.4",$/;" s object:packages.node_modules/rollup
|
|
653
661
|
version package-lock.json /^ "version": "5.3.0",$/;" s object:packages.node_modules/@rollup/pluginutils
|
|
654
662
|
version package-lock.json /^ "version": "6.5.0",$/;" s object:packages.node_modules/fdir
|
|
655
|
-
version package-lock.json /^ "version": "2.0.0-alpha.
|
|
656
|
-
version package.json /^ "version": "2.0.0-alpha.
|
|
663
|
+
version package-lock.json /^ "version": "2.0.0-alpha.2",$/;" s
|
|
664
|
+
version package.json /^ "version": "2.0.0-alpha.2",$/;" s
|