@babylonjs/core 7.21.4 → 7.22.0

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.
Files changed (146) hide show
  1. package/Audio/analyser.js +3 -3
  2. package/Audio/analyser.js.map +1 -1
  3. package/Audio/audioSceneComponent.js +7 -7
  4. package/Audio/audioSceneComponent.js.map +1 -1
  5. package/Audio/sound.js +55 -50
  6. package/Audio/sound.js.map +1 -1
  7. package/Audio/soundTrack.js +11 -11
  8. package/Audio/soundTrack.js.map +1 -1
  9. package/Cameras/flyCamera.js +2 -2
  10. package/Cameras/flyCamera.js.map +1 -1
  11. package/Cameras/freeCamera.js +2 -2
  12. package/Cameras/freeCamera.js.map +1 -1
  13. package/Collisions/collisionCoordinator.js +2 -2
  14. package/Collisions/collisionCoordinator.js.map +1 -1
  15. package/Debug/debugLayer.js +2 -2
  16. package/Debug/debugLayer.js.map +1 -1
  17. package/Engines/AbstractEngine/abstractEngine.cubeTexture.js +25 -28
  18. package/Engines/AbstractEngine/abstractEngine.cubeTexture.js.map +1 -1
  19. package/Engines/abstractEngine.d.ts +18 -3
  20. package/Engines/abstractEngine.js +32 -13
  21. package/Engines/abstractEngine.js.map +1 -1
  22. package/Engines/engine.d.ts +0 -7
  23. package/Engines/engine.js +0 -13
  24. package/Engines/engine.js.map +1 -1
  25. package/Engines/nativeEngine.js +3 -9
  26. package/Engines/nativeEngine.js.map +1 -1
  27. package/Engines/thinEngine.d.ts +0 -37
  28. package/Engines/thinEngine.js +2 -40
  29. package/Engines/thinEngine.js.map +1 -1
  30. package/Engines/webgpuEngine.js +1 -2
  31. package/Engines/webgpuEngine.js.map +1 -1
  32. package/Gamepads/gamepadManager.js +2 -2
  33. package/Gamepads/gamepadManager.js.map +1 -1
  34. package/Loading/sceneLoader.d.ts +2 -2
  35. package/Loading/sceneLoader.js +3 -3
  36. package/Loading/sceneLoader.js.map +1 -1
  37. package/Materials/Node/nodeMaterialBuildState.d.ts +3 -3
  38. package/Materials/Textures/Loaders/EXR/exrLoader.compression.d.ts +31 -0
  39. package/Materials/Textures/Loaders/EXR/exrLoader.compression.huf.d.ts +9 -0
  40. package/Materials/Textures/Loaders/EXR/exrLoader.compression.huf.js +454 -0
  41. package/Materials/Textures/Loaders/EXR/exrLoader.compression.huf.js.map +1 -0
  42. package/Materials/Textures/Loaders/EXR/exrLoader.compression.js +147 -0
  43. package/Materials/Textures/Loaders/EXR/exrLoader.compression.js.map +1 -0
  44. package/Materials/Textures/Loaders/EXR/exrLoader.compression.rle.d.ts +7 -0
  45. package/Materials/Textures/Loaders/EXR/exrLoader.compression.rle.js +91 -0
  46. package/Materials/Textures/Loaders/EXR/exrLoader.compression.rle.js.map +1 -0
  47. package/Materials/Textures/Loaders/EXR/exrLoader.configuration.d.ts +17 -0
  48. package/Materials/Textures/Loaders/EXR/exrLoader.configuration.js +19 -0
  49. package/Materials/Textures/Loaders/EXR/exrLoader.configuration.js.map +1 -0
  50. package/Materials/Textures/Loaders/EXR/exrLoader.core.d.ts +130 -0
  51. package/Materials/Textures/Loaders/EXR/exrLoader.core.js +452 -0
  52. package/Materials/Textures/Loaders/EXR/exrLoader.core.js.map +1 -0
  53. package/Materials/Textures/Loaders/EXR/exrLoader.decoder.d.ts +25 -0
  54. package/Materials/Textures/Loaders/EXR/exrLoader.decoder.js +284 -0
  55. package/Materials/Textures/Loaders/EXR/exrLoader.decoder.js.map +1 -0
  56. package/Materials/Textures/Loaders/EXR/exrLoader.header.d.ts +9 -0
  57. package/Materials/Textures/Loaders/EXR/exrLoader.header.js +112 -0
  58. package/Materials/Textures/Loaders/EXR/exrLoader.header.js.map +1 -0
  59. package/Materials/Textures/Loaders/EXR/exrLoader.interfaces.d.ts +75 -0
  60. package/Materials/Textures/Loaders/EXR/exrLoader.interfaces.js +16 -0
  61. package/Materials/Textures/Loaders/EXR/exrLoader.interfaces.js.map +1 -0
  62. package/Materials/Textures/Loaders/EXR/index.d.ts +7 -0
  63. package/Materials/Textures/Loaders/EXR/index.js +8 -0
  64. package/Materials/Textures/Loaders/EXR/index.js.map +1 -0
  65. package/Materials/Textures/Loaders/basisTextureLoader.d.ts +1 -7
  66. package/Materials/Textures/Loaders/basisTextureLoader.js +0 -11
  67. package/Materials/Textures/Loaders/basisTextureLoader.js.map +1 -1
  68. package/Materials/Textures/Loaders/ddsTextureLoader.d.ts +1 -7
  69. package/Materials/Textures/Loaders/ddsTextureLoader.js +0 -11
  70. package/Materials/Textures/Loaders/ddsTextureLoader.js.map +1 -1
  71. package/Materials/Textures/Loaders/envTextureLoader.d.ts +1 -7
  72. package/Materials/Textures/Loaders/envTextureLoader.js +0 -11
  73. package/Materials/Textures/Loaders/envTextureLoader.js.map +1 -1
  74. package/Materials/Textures/Loaders/exrTextureLoader.d.ts +37 -0
  75. package/Materials/Textures/Loaders/exrTextureLoader.js +122 -0
  76. package/Materials/Textures/Loaders/exrTextureLoader.js.map +1 -0
  77. package/Materials/Textures/Loaders/hdrTextureLoader.d.ts +1 -7
  78. package/Materials/Textures/Loaders/hdrTextureLoader.js +0 -11
  79. package/Materials/Textures/Loaders/hdrTextureLoader.js.map +1 -1
  80. package/Materials/Textures/Loaders/index.d.ts +4 -0
  81. package/Materials/Textures/Loaders/index.js +5 -0
  82. package/Materials/Textures/Loaders/index.js.map +1 -1
  83. package/Materials/Textures/{internalTextureLoader.d.ts → Loaders/internalTextureLoader.d.ts} +2 -9
  84. package/Materials/Textures/Loaders/internalTextureLoader.js.map +1 -0
  85. package/Materials/Textures/Loaders/ktxTextureLoader.d.ts +1 -8
  86. package/Materials/Textures/Loaders/ktxTextureLoader.js +0 -13
  87. package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
  88. package/Materials/Textures/Loaders/textureLoaderManager.d.ts +9 -0
  89. package/Materials/Textures/Loaders/textureLoaderManager.js +32 -0
  90. package/Materials/Textures/Loaders/textureLoaderManager.js.map +1 -0
  91. package/Materials/Textures/Loaders/tgaTextureLoader.d.ts +1 -7
  92. package/Materials/Textures/Loaders/tgaTextureLoader.js +0 -11
  93. package/Materials/Textures/Loaders/tgaTextureLoader.js.map +1 -1
  94. package/Materials/Textures/Packer/packer.js +2 -2
  95. package/Materials/Textures/Packer/packer.js.map +1 -1
  96. package/Materials/Textures/index.d.ts +0 -1
  97. package/Materials/Textures/index.js +0 -1
  98. package/Materials/Textures/index.js.map +1 -1
  99. package/Materials/fresnelParameters.js +2 -2
  100. package/Materials/fresnelParameters.js.map +1 -1
  101. package/Materials/materialFlags.js +24 -24
  102. package/Materials/materialFlags.js.map +1 -1
  103. package/Meshes/Node/nodeGeometry.js +2 -2
  104. package/Meshes/Node/nodeGeometry.js.map +1 -1
  105. package/Meshes/abstractMesh.js +2 -2
  106. package/Meshes/abstractMesh.js.map +1 -1
  107. package/Misc/fileTools.d.ts +13 -0
  108. package/Misc/fileTools.js +16 -0
  109. package/Misc/fileTools.js.map +1 -1
  110. package/Offline/database.js +2 -2
  111. package/Offline/database.js.map +1 -1
  112. package/Rendering/boundingBoxRenderer.d.ts +2 -2
  113. package/Rendering/boundingBoxRenderer.js +2 -2
  114. package/Rendering/boundingBoxRenderer.js.map +1 -1
  115. package/Rendering/edgesRenderer.d.ts +7 -2
  116. package/Rendering/edgesRenderer.js +23 -6
  117. package/Rendering/edgesRenderer.js.map +1 -1
  118. package/Rendering/index.d.ts +12 -4
  119. package/Rendering/index.js +14 -4
  120. package/Rendering/index.js.map +1 -1
  121. package/Rendering/outlineRenderer.d.ts +7 -2
  122. package/Rendering/outlineRenderer.js +64 -11
  123. package/Rendering/outlineRenderer.js.map +1 -1
  124. package/ShadersWGSL/line.fragment.d.ts +9 -0
  125. package/ShadersWGSL/line.fragment.js +24 -0
  126. package/ShadersWGSL/line.fragment.js.map +1 -0
  127. package/ShadersWGSL/line.vertex.d.ts +13 -0
  128. package/ShadersWGSL/line.vertex.js +36 -0
  129. package/ShadersWGSL/line.vertex.js.map +1 -0
  130. package/ShadersWGSL/outline.fragment.d.ts +9 -0
  131. package/ShadersWGSL/outline.fragment.js +30 -0
  132. package/ShadersWGSL/outline.fragment.js.map +1 -0
  133. package/ShadersWGSL/outline.vertex.d.ts +19 -0
  134. package/ShadersWGSL/outline.vertex.js +66 -0
  135. package/ShadersWGSL/outline.vertex.js.map +1 -0
  136. package/Sprites/spriteMap.js +4 -4
  137. package/Sprites/spriteMap.js.map +1 -1
  138. package/XR/features/WebXRDepthSensing.js +2 -3
  139. package/XR/features/WebXRDepthSensing.js.map +1 -1
  140. package/XR/webXRExperienceHelper.js +2 -2
  141. package/XR/webXRExperienceHelper.js.map +1 -1
  142. package/package.json +1 -1
  143. package/scene.js +2 -3
  144. package/scene.js.map +1 -1
  145. package/Materials/Textures/internalTextureLoader.js.map +0 -1
  146. /package/Materials/Textures/{internalTextureLoader.js → Loaders/internalTextureLoader.js} +0 -0
@@ -0,0 +1,454 @@
1
+ import { ParseUint32, ParseUint8Array } from "./exrLoader.core.js";
2
+ import { HUF_DECBITS, HUF_DECMASK, HUF_DECSIZE, HUF_ENCSIZE, LONG_ZEROCODE_RUN, SHORT_ZEROCODE_RUN, SHORTEST_LONG_RUN, USHORT_RANGE } from "./exrLoader.interfaces.js";
3
+ /**
4
+ * Inspired by https://github.com/sciecode/three.js/blob/dev/examples/jsm/loaders/EXRLoader.js
5
+ * Referred to the original Industrial Light & Magic OpenEXR implementation and the TinyEXR / Syoyo Fujita
6
+ * implementation.
7
+ */
8
+ // /*
9
+ // Copyright (c) 2014 - 2017, Syoyo Fujita
10
+ // All rights reserved.
11
+ // Redistribution and use in source and binary forms, with or without
12
+ // modification, are permitted provided that the following conditions are met:
13
+ // * Redistributions of source code must retain the above copyright
14
+ // notice, this list of conditions and the following disclaimer.
15
+ // * Redistributions in binary form must reproduce the above copyright
16
+ // notice, this list of conditions and the following disclaimer in the
17
+ // documentation and/or other materials provided with the distribution.
18
+ // * Neither the name of the Syoyo Fujita nor the
19
+ // names of its contributors may be used to endorse or promote products
20
+ // derived from this software without specific prior written permission.
21
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
22
+ // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
23
+ // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24
+ // DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
25
+ // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
26
+ // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
27
+ // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
28
+ // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30
+ // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
+ // */
32
+ // // TinyEXR contains some OpenEXR code, which is licensed under ------------
33
+ // ///////////////////////////////////////////////////////////////////////////
34
+ // //
35
+ // // Copyright (c) 2002, Industrial Light & Magic, a division of Lucas
36
+ // // Digital Ltd. LLC
37
+ // //
38
+ // // All rights reserved.
39
+ // //
40
+ // // Redistribution and use in source and binary forms, with or without
41
+ // // modification, are permitted provided that the following conditions are
42
+ // // met:
43
+ // // * Redistributions of source code must retain the above copyright
44
+ // // notice, this list of conditions and the following disclaimer.
45
+ // // * Redistributions in binary form must reproduce the above
46
+ // // copyright notice, this list of conditions and the following disclaimer
47
+ // // in the documentation and/or other materials provided with the
48
+ // // distribution.
49
+ // // * Neither the name of Industrial Light & Magic nor the names of
50
+ // // its contributors may be used to endorse or promote products derived
51
+ // // from this software without specific prior written permission.
52
+ // //
53
+ // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
54
+ // // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
55
+ // // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
56
+ // // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
57
+ // // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
58
+ // // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
59
+ // // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
60
+ // // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
61
+ // // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
62
+ // // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
63
+ // // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
64
+ // //
65
+ // ///////////////////////////////////////////////////////////////////////////
66
+ // // End of OpenEXR license -------------------------------------------------
67
+ const NBITS = 16;
68
+ const A_OFFSET = 1 << (NBITS - 1);
69
+ const MOD_MASK = (1 << NBITS) - 1;
70
+ /** @internal */
71
+ export function ReverseLutFromBitmap(bitmap, lut) {
72
+ let k = 0;
73
+ for (let i = 0; i < USHORT_RANGE; ++i) {
74
+ if (i == 0 || bitmap[i >> 3] & (1 << (i & 7))) {
75
+ lut[k++] = i;
76
+ }
77
+ }
78
+ const n = k - 1;
79
+ while (k < USHORT_RANGE)
80
+ lut[k++] = 0;
81
+ return n;
82
+ }
83
+ function HufClearDecTable(hdec) {
84
+ for (let i = 0; i < HUF_DECSIZE; i++) {
85
+ hdec[i] = {};
86
+ hdec[i].len = 0;
87
+ hdec[i].lit = 0;
88
+ hdec[i].p = null;
89
+ }
90
+ }
91
+ function GetBits(nBits, c, lc, array, offset) {
92
+ while (lc < nBits) {
93
+ c = (c << 8) | ParseUint8Array(array, offset);
94
+ lc += 8;
95
+ }
96
+ lc -= nBits;
97
+ return {
98
+ l: (c >> lc) & ((1 << nBits) - 1),
99
+ c,
100
+ lc,
101
+ };
102
+ }
103
+ function GetChar(c, lc, array, offset) {
104
+ c = (c << 8) | ParseUint8Array(array, offset);
105
+ lc += 8;
106
+ return {
107
+ c,
108
+ lc,
109
+ };
110
+ }
111
+ function GetCode(po, rlc, c, lc, array, offset, outBuffer, outBufferOffset, outBufferEndOffset) {
112
+ if (po == rlc) {
113
+ if (lc < 8) {
114
+ const gc = GetChar(c, lc, array, offset);
115
+ c = gc.c;
116
+ lc = gc.lc;
117
+ }
118
+ lc -= 8;
119
+ let cs = c >> lc;
120
+ cs = new Uint8Array([cs])[0];
121
+ if (outBufferOffset.value + cs > outBufferEndOffset) {
122
+ return null;
123
+ }
124
+ const s = outBuffer[outBufferOffset.value - 1];
125
+ while (cs-- > 0) {
126
+ outBuffer[outBufferOffset.value++] = s;
127
+ }
128
+ }
129
+ else if (outBufferOffset.value < outBufferEndOffset) {
130
+ outBuffer[outBufferOffset.value++] = po;
131
+ }
132
+ else {
133
+ return null;
134
+ }
135
+ return { c, lc };
136
+ }
137
+ const HufTableBuffer = new Array(59);
138
+ function HufCanonicalCodeTable(hcode) {
139
+ for (let i = 0; i <= 58; ++i)
140
+ HufTableBuffer[i] = 0;
141
+ for (let i = 0; i < HUF_ENCSIZE; ++i)
142
+ HufTableBuffer[hcode[i]] += 1;
143
+ let c = 0;
144
+ for (let i = 58; i > 0; --i) {
145
+ const nc = (c + HufTableBuffer[i]) >> 1;
146
+ HufTableBuffer[i] = c;
147
+ c = nc;
148
+ }
149
+ for (let i = 0; i < HUF_ENCSIZE; ++i) {
150
+ const l = hcode[i];
151
+ if (l > 0)
152
+ hcode[i] = l | (HufTableBuffer[l]++ << 6);
153
+ }
154
+ }
155
+ function HufUnpackEncTable(array, offset, ni, im, iM, hcode) {
156
+ const p = offset;
157
+ let c = 0;
158
+ let lc = 0;
159
+ for (; im <= iM; im++) {
160
+ if (p.value - offset.value > ni) {
161
+ return;
162
+ }
163
+ let gb = GetBits(6, c, lc, array, p);
164
+ const l = gb.l;
165
+ c = gb.c;
166
+ lc = gb.lc;
167
+ hcode[im] = l;
168
+ if (l == LONG_ZEROCODE_RUN) {
169
+ if (p.value - offset.value > ni) {
170
+ throw new Error("Error in HufUnpackEncTable");
171
+ }
172
+ gb = GetBits(8, c, lc, array, p);
173
+ let zerun = gb.l + SHORTEST_LONG_RUN;
174
+ c = gb.c;
175
+ lc = gb.lc;
176
+ if (im + zerun > iM + 1) {
177
+ throw new Error("Error in HufUnpackEncTable");
178
+ }
179
+ while (zerun--)
180
+ hcode[im++] = 0;
181
+ im--;
182
+ }
183
+ else if (l >= SHORT_ZEROCODE_RUN) {
184
+ let zerun = l - SHORT_ZEROCODE_RUN + 2;
185
+ if (im + zerun > iM + 1) {
186
+ throw new Error("Error in HufUnpackEncTable");
187
+ }
188
+ while (zerun--)
189
+ hcode[im++] = 0;
190
+ im--;
191
+ }
192
+ }
193
+ HufCanonicalCodeTable(hcode);
194
+ }
195
+ function HufLength(code) {
196
+ return code & 63;
197
+ }
198
+ function HufCode(code) {
199
+ return code >> 6;
200
+ }
201
+ function HufBuildDecTable(hcode, im, iM, hdecod) {
202
+ for (; im <= iM; im++) {
203
+ const c = HufCode(hcode[im]);
204
+ const l = HufLength(hcode[im]);
205
+ if (c >> l) {
206
+ throw new Error("Invalid table entry");
207
+ }
208
+ if (l > HUF_DECBITS) {
209
+ const pl = hdecod[c >> (l - HUF_DECBITS)];
210
+ if (pl.len) {
211
+ throw new Error("Invalid table entry");
212
+ }
213
+ pl.lit++;
214
+ if (pl.p) {
215
+ const p = pl.p;
216
+ pl.p = new Array(pl.lit);
217
+ for (let i = 0; i < pl.lit - 1; ++i) {
218
+ pl.p[i] = p[i];
219
+ }
220
+ }
221
+ else {
222
+ pl.p = new Array(1);
223
+ }
224
+ pl.p[pl.lit - 1] = im;
225
+ }
226
+ else if (l) {
227
+ let plOffset = 0;
228
+ for (let i = 1 << (HUF_DECBITS - l); i > 0; i--) {
229
+ const pl = hdecod[(c << (HUF_DECBITS - l)) + plOffset];
230
+ if (pl.len || pl.p) {
231
+ throw new Error("Invalid table entry");
232
+ }
233
+ pl.len = l;
234
+ pl.lit = im;
235
+ plOffset++;
236
+ }
237
+ }
238
+ }
239
+ return true;
240
+ }
241
+ function HufDecode(encodingTable, decodingTable, array, offset, ni, rlc, no, outBuffer, outOffset) {
242
+ let c = 0;
243
+ let lc = 0;
244
+ const outBufferEndOffset = no;
245
+ const inOffsetEnd = Math.trunc(offset.value + (ni + 7) / 8);
246
+ while (offset.value < inOffsetEnd) {
247
+ let gc = GetChar(c, lc, array, offset);
248
+ c = gc.c;
249
+ lc = gc.lc;
250
+ while (lc >= HUF_DECBITS) {
251
+ const index = (c >> (lc - HUF_DECBITS)) & HUF_DECMASK;
252
+ const pl = decodingTable[index];
253
+ if (pl.len) {
254
+ lc -= pl.len;
255
+ const gCode = GetCode(pl.lit, rlc, c, lc, array, offset, outBuffer, outOffset, outBufferEndOffset);
256
+ if (gCode) {
257
+ c = gCode.c;
258
+ lc = gCode.lc;
259
+ }
260
+ }
261
+ else {
262
+ if (!pl.p) {
263
+ throw new Error("hufDecode issues");
264
+ }
265
+ let j;
266
+ for (j = 0; j < pl.lit; j++) {
267
+ const l = HufLength(encodingTable[pl.p[j]]);
268
+ while (lc < l && offset.value < inOffsetEnd) {
269
+ gc = GetChar(c, lc, array, offset);
270
+ c = gc.c;
271
+ lc = gc.lc;
272
+ }
273
+ if (lc >= l) {
274
+ if (HufCode(encodingTable[pl.p[j]]) == ((c >> (lc - l)) & ((1 << l) - 1))) {
275
+ lc -= l;
276
+ const gCode = GetCode(pl.p[j], rlc, c, lc, array, offset, outBuffer, outOffset, outBufferEndOffset);
277
+ if (gCode) {
278
+ c = gCode.c;
279
+ lc = gCode.lc;
280
+ }
281
+ break;
282
+ }
283
+ }
284
+ }
285
+ if (j == pl.lit) {
286
+ throw new Error("HufDecode issues");
287
+ }
288
+ }
289
+ }
290
+ }
291
+ const i = (8 - ni) & 7;
292
+ c >>= i;
293
+ lc -= i;
294
+ while (lc > 0) {
295
+ const pl = decodingTable[(c << (HUF_DECBITS - lc)) & HUF_DECMASK];
296
+ if (pl.len) {
297
+ lc -= pl.len;
298
+ const gCode = GetCode(pl.lit, rlc, c, lc, array, offset, outBuffer, outOffset, outBufferEndOffset);
299
+ if (gCode) {
300
+ c = gCode.c;
301
+ lc = gCode.lc;
302
+ }
303
+ }
304
+ else {
305
+ throw new Error("HufDecode issues");
306
+ }
307
+ }
308
+ return true;
309
+ }
310
+ /** @internal */
311
+ export function HufUncompress(array, dataView, offset, nCompressed, outBuffer, nRaw) {
312
+ const outOffset = { value: 0 };
313
+ const initialInOffset = offset.value;
314
+ const im = ParseUint32(dataView, offset);
315
+ const iM = ParseUint32(dataView, offset);
316
+ offset.value += 4;
317
+ const nBits = ParseUint32(dataView, offset);
318
+ offset.value += 4;
319
+ if (im < 0 || im >= HUF_ENCSIZE || iM < 0 || iM >= HUF_ENCSIZE) {
320
+ throw new Error("Wrong HUF_ENCSIZE");
321
+ }
322
+ const freq = new Array(HUF_ENCSIZE);
323
+ const hdec = new Array(HUF_DECSIZE);
324
+ HufClearDecTable(hdec);
325
+ const ni = nCompressed - (offset.value - initialInOffset);
326
+ HufUnpackEncTable(array, offset, ni, im, iM, freq);
327
+ if (nBits > 8 * (nCompressed - (offset.value - initialInOffset))) {
328
+ throw new Error("Wrong hufUncompress");
329
+ }
330
+ HufBuildDecTable(freq, im, iM, hdec);
331
+ HufDecode(freq, hdec, array, offset, nBits, iM, nRaw, outBuffer, outOffset);
332
+ }
333
+ function UInt16(value) {
334
+ return value & 0xffff;
335
+ }
336
+ function Int16(value) {
337
+ const ref = UInt16(value);
338
+ return ref > 0x7fff ? ref - 0x10000 : ref;
339
+ }
340
+ function Wdec14(l, h) {
341
+ const ls = Int16(l);
342
+ const hs = Int16(h);
343
+ const hi = hs;
344
+ const ai = ls + (hi & 1) + (hi >> 1);
345
+ const as = ai;
346
+ const bs = ai - hi;
347
+ return { a: as, b: bs };
348
+ }
349
+ function Wdec16(l, h) {
350
+ const m = UInt16(l);
351
+ const d = UInt16(h);
352
+ const bb = (m - (d >> 1)) & MOD_MASK;
353
+ const aa = (d + bb - A_OFFSET) & MOD_MASK;
354
+ return { a: aa, b: bb };
355
+ }
356
+ /** @internal */
357
+ export function Wav2Decode(buffer, j, nx, ox, ny, oy, mx) {
358
+ const w14 = mx < 1 << 14;
359
+ const n = nx > ny ? ny : nx;
360
+ let p = 1;
361
+ let p2;
362
+ let py;
363
+ while (p <= n)
364
+ p <<= 1;
365
+ p >>= 1;
366
+ p2 = p;
367
+ p >>= 1;
368
+ while (p >= 1) {
369
+ py = 0;
370
+ const ey = py + oy * (ny - p2);
371
+ const oy1 = oy * p;
372
+ const oy2 = oy * p2;
373
+ const ox1 = ox * p;
374
+ const ox2 = ox * p2;
375
+ let i00, i01, i10, i11;
376
+ for (; py <= ey; py += oy2) {
377
+ let px = py;
378
+ const ex = py + ox * (nx - p2);
379
+ for (; px <= ex; px += ox2) {
380
+ const p01 = px + ox1;
381
+ const p10 = px + oy1;
382
+ const p11 = p10 + ox1;
383
+ if (w14) {
384
+ let result = Wdec14(buffer[px + j], buffer[p10 + j]);
385
+ i00 = result.a;
386
+ i10 = result.b;
387
+ result = Wdec14(buffer[p01 + j], buffer[p11 + j]);
388
+ i01 = result.a;
389
+ i11 = result.b;
390
+ result = Wdec14(i00, i01);
391
+ buffer[px + j] = result.a;
392
+ buffer[p01 + j] = result.b;
393
+ result = Wdec14(i10, i11);
394
+ buffer[p10 + j] = result.a;
395
+ buffer[p11 + j] = result.b;
396
+ }
397
+ else {
398
+ let result = Wdec16(buffer[px + j], buffer[p10 + j]);
399
+ i00 = result.a;
400
+ i10 = result.b;
401
+ result = Wdec16(buffer[p01 + j], buffer[p11 + j]);
402
+ i01 = result.a;
403
+ i11 = result.b;
404
+ result = Wdec16(i00, i01);
405
+ buffer[px + j] = result.a;
406
+ buffer[p01 + j] = result.b;
407
+ result = Wdec16(i10, i11);
408
+ buffer[p10 + j] = result.a;
409
+ buffer[p11 + j] = result.b;
410
+ }
411
+ }
412
+ if (nx & p) {
413
+ const p10 = px + oy1;
414
+ let result;
415
+ if (w14) {
416
+ result = Wdec14(buffer[px + j], buffer[p10 + j]);
417
+ }
418
+ else {
419
+ result = Wdec16(buffer[px + j], buffer[p10 + j]);
420
+ }
421
+ i00 = result.a;
422
+ buffer[p10 + j] = result.b;
423
+ buffer[px + j] = i00;
424
+ }
425
+ }
426
+ if (ny & p) {
427
+ let px = py;
428
+ const ex = py + ox * (nx - p2);
429
+ for (; px <= ex; px += ox2) {
430
+ const p01 = px + ox1;
431
+ let result;
432
+ if (w14) {
433
+ result = Wdec14(buffer[px + j], buffer[p01 + j]);
434
+ }
435
+ else {
436
+ result = Wdec16(buffer[px + j], buffer[p01 + j]);
437
+ }
438
+ i00 = result.a;
439
+ buffer[p01 + j] = result.b;
440
+ buffer[px + j] = i00;
441
+ }
442
+ }
443
+ p2 = p;
444
+ p >>= 1;
445
+ }
446
+ return py;
447
+ }
448
+ /** @internal */
449
+ export function ApplyLut(lut, data, nData) {
450
+ for (let i = 0; i < nData; ++i) {
451
+ data[i] = lut[data[i]];
452
+ }
453
+ }
454
+ //# sourceMappingURL=exrLoader.compression.huf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exrLoader.compression.huf.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/Materials/Textures/Loaders/EXR/exrLoader.compression.huf.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport type { Nullable } from \"core/types\";\r\nimport type { DataCursor } from \"./exrLoader.core\";\r\nimport { ParseUint32, ParseUint8Array } from \"./exrLoader.core\";\r\nimport { HUF_DECBITS, HUF_DECMASK, HUF_DECSIZE, HUF_ENCSIZE, LONG_ZEROCODE_RUN, SHORT_ZEROCODE_RUN, SHORTEST_LONG_RUN, USHORT_RANGE } from \"./exrLoader.interfaces\";\r\n\r\n/**\r\n * Inspired by https://github.com/sciecode/three.js/blob/dev/examples/jsm/loaders/EXRLoader.js\r\n * Referred to the original Industrial Light & Magic OpenEXR implementation and the TinyEXR / Syoyo Fujita\r\n * implementation.\r\n */\r\n\r\n// /*\r\n// Copyright (c) 2014 - 2017, Syoyo Fujita\r\n// All rights reserved.\r\n\r\n// Redistribution and use in source and binary forms, with or without\r\n// modification, are permitted provided that the following conditions are met:\r\n// * Redistributions of source code must retain the above copyright\r\n// notice, this list of conditions and the following disclaimer.\r\n// * Redistributions in binary form must reproduce the above copyright\r\n// notice, this list of conditions and the following disclaimer in the\r\n// documentation and/or other materials provided with the distribution.\r\n// * Neither the name of the Syoyo Fujita nor the\r\n// names of its contributors may be used to endorse or promote products\r\n// derived from this software without specific prior written permission.\r\n\r\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\r\n// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r\n// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r\n// DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\r\n// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\r\n// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r\n// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\r\n// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\r\n// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r\n// */\r\n\r\n// // TinyEXR contains some OpenEXR code, which is licensed under ------------\r\n\r\n// ///////////////////////////////////////////////////////////////////////////\r\n// //\r\n// // Copyright (c) 2002, Industrial Light & Magic, a division of Lucas\r\n// // Digital Ltd. LLC\r\n// //\r\n// // All rights reserved.\r\n// //\r\n// // Redistribution and use in source and binary forms, with or without\r\n// // modification, are permitted provided that the following conditions are\r\n// // met:\r\n// // * Redistributions of source code must retain the above copyright\r\n// // notice, this list of conditions and the following disclaimer.\r\n// // * Redistributions in binary form must reproduce the above\r\n// // copyright notice, this list of conditions and the following disclaimer\r\n// // in the documentation and/or other materials provided with the\r\n// // distribution.\r\n// // * Neither the name of Industrial Light & Magic nor the names of\r\n// // its contributors may be used to endorse or promote products derived\r\n// // from this software without specific prior written permission.\r\n// //\r\n// // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r\n// // \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r\n// // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\r\n// // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\r\n// // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n// // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r\n// // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r\n// // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r\n// // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r\n// // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r\n// // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r\n// //\r\n// ///////////////////////////////////////////////////////////////////////////\r\n\r\n// // End of OpenEXR license -------------------------------------------------\r\n\r\nconst NBITS = 16;\r\nconst A_OFFSET = 1 << (NBITS - 1);\r\nconst MOD_MASK = (1 << NBITS) - 1;\r\n\r\ninterface IGetBits {\r\n l: number;\r\n c: number;\r\n lc: number;\r\n}\r\n\r\ninterface IGetChar {\r\n c: number;\r\n lc: number;\r\n}\r\n\r\n/** @internal */\r\nexport function ReverseLutFromBitmap(bitmap: Uint8Array, lut: Uint16Array) {\r\n let k = 0;\r\n\r\n for (let i = 0; i < USHORT_RANGE; ++i) {\r\n if (i == 0 || bitmap[i >> 3] & (1 << (i & 7))) {\r\n lut[k++] = i;\r\n }\r\n }\r\n\r\n const n = k - 1;\r\n\r\n while (k < USHORT_RANGE) lut[k++] = 0;\r\n\r\n return n;\r\n}\r\n\r\nfunction HufClearDecTable(hdec: Array<any>) {\r\n for (let i = 0; i < HUF_DECSIZE; i++) {\r\n hdec[i] = {};\r\n hdec[i].len = 0;\r\n hdec[i].lit = 0;\r\n hdec[i].p = null;\r\n }\r\n}\r\n\r\nfunction GetBits(nBits: number, c: number, lc: number, array: Uint8Array, offset: DataCursor): IGetBits {\r\n while (lc < nBits) {\r\n c = (c << 8) | ParseUint8Array(array, offset);\r\n lc += 8;\r\n }\r\n\r\n lc -= nBits;\r\n\r\n return {\r\n l: (c >> lc) & ((1 << nBits) - 1),\r\n c,\r\n lc,\r\n };\r\n}\r\n\r\nfunction GetChar(c: number, lc: number, array: Uint8Array, offset: DataCursor): IGetChar {\r\n c = (c << 8) | ParseUint8Array(array, offset);\r\n lc += 8;\r\n\r\n return {\r\n c,\r\n lc,\r\n };\r\n}\r\n\r\nfunction GetCode(\r\n po: number,\r\n rlc: number,\r\n c: number,\r\n lc: number,\r\n array: Uint8Array,\r\n offset: DataCursor,\r\n outBuffer: Uint16Array,\r\n outBufferOffset: DataCursor,\r\n outBufferEndOffset: number\r\n): Nullable<IGetChar> {\r\n if (po == rlc) {\r\n if (lc < 8) {\r\n const gc = GetChar(c, lc, array, offset);\r\n c = gc.c;\r\n lc = gc.lc;\r\n }\r\n\r\n lc -= 8;\r\n\r\n let cs = c >> lc;\r\n cs = new Uint8Array([cs])[0];\r\n\r\n if (outBufferOffset.value + cs > outBufferEndOffset) {\r\n return null;\r\n }\r\n\r\n const s = outBuffer[outBufferOffset.value - 1];\r\n\r\n while (cs-- > 0) {\r\n outBuffer[outBufferOffset.value++] = s;\r\n }\r\n } else if (outBufferOffset.value < outBufferEndOffset) {\r\n outBuffer[outBufferOffset.value++] = po;\r\n } else {\r\n return null;\r\n }\r\n\r\n return { c, lc };\r\n}\r\n\r\nconst HufTableBuffer = new Array(59);\r\n\r\nfunction HufCanonicalCodeTable(hcode: Array<any>) {\r\n for (let i = 0; i <= 58; ++i) HufTableBuffer[i] = 0;\r\n for (let i = 0; i < HUF_ENCSIZE; ++i) HufTableBuffer[hcode[i]] += 1;\r\n\r\n let c = 0;\r\n\r\n for (let i = 58; i > 0; --i) {\r\n const nc = (c + HufTableBuffer[i]) >> 1;\r\n HufTableBuffer[i] = c;\r\n c = nc;\r\n }\r\n\r\n for (let i = 0; i < HUF_ENCSIZE; ++i) {\r\n const l = hcode[i];\r\n if (l > 0) hcode[i] = l | (HufTableBuffer[l]++ << 6);\r\n }\r\n}\r\n\r\nfunction HufUnpackEncTable(array: Uint8Array, offset: DataCursor, ni: number, im: number, iM: number, hcode: Array<any>) {\r\n const p = offset;\r\n let c = 0;\r\n let lc = 0;\r\n\r\n for (; im <= iM; im++) {\r\n if (p.value - offset.value > ni) {\r\n return;\r\n }\r\n\r\n let gb = GetBits(6, c, lc, array, p);\r\n\r\n const l = gb.l;\r\n c = gb.c;\r\n lc = gb.lc;\r\n\r\n hcode[im] = l;\r\n\r\n if (l == LONG_ZEROCODE_RUN) {\r\n if (p.value - offset.value > ni) {\r\n throw new Error(\"Error in HufUnpackEncTable\");\r\n }\r\n\r\n gb = GetBits(8, c, lc, array, p);\r\n\r\n let zerun = gb.l + SHORTEST_LONG_RUN;\r\n c = gb.c;\r\n lc = gb.lc;\r\n\r\n if (im + zerun > iM + 1) {\r\n throw new Error(\"Error in HufUnpackEncTable\");\r\n }\r\n\r\n while (zerun--) hcode[im++] = 0;\r\n\r\n im--;\r\n } else if (l >= SHORT_ZEROCODE_RUN) {\r\n let zerun = l - SHORT_ZEROCODE_RUN + 2;\r\n\r\n if (im + zerun > iM + 1) {\r\n throw new Error(\"Error in HufUnpackEncTable\");\r\n }\r\n\r\n while (zerun--) hcode[im++] = 0;\r\n\r\n im--;\r\n }\r\n }\r\n\r\n HufCanonicalCodeTable(hcode);\r\n}\r\n\r\nfunction HufLength(code: number) {\r\n return code & 63;\r\n}\r\n\r\nfunction HufCode(code: number) {\r\n return code >> 6;\r\n}\r\n\r\nfunction HufBuildDecTable(hcode: Array<any>, im: number, iM: number, hdecod: Array<any>) {\r\n for (; im <= iM; im++) {\r\n const c = HufCode(hcode[im]);\r\n const l = HufLength(hcode[im]);\r\n\r\n if (c >> l) {\r\n throw new Error(\"Invalid table entry\");\r\n }\r\n\r\n if (l > HUF_DECBITS) {\r\n const pl = hdecod[c >> (l - HUF_DECBITS)];\r\n\r\n if (pl.len) {\r\n throw new Error(\"Invalid table entry\");\r\n }\r\n\r\n pl.lit++;\r\n\r\n if (pl.p) {\r\n const p = pl.p;\r\n pl.p = new Array(pl.lit);\r\n\r\n for (let i = 0; i < pl.lit - 1; ++i) {\r\n pl.p[i] = p[i];\r\n }\r\n } else {\r\n pl.p = new Array(1);\r\n }\r\n\r\n pl.p[pl.lit - 1] = im;\r\n } else if (l) {\r\n let plOffset = 0;\r\n\r\n for (let i = 1 << (HUF_DECBITS - l); i > 0; i--) {\r\n const pl = hdecod[(c << (HUF_DECBITS - l)) + plOffset];\r\n\r\n if (pl.len || pl.p) {\r\n throw new Error(\"Invalid table entry\");\r\n }\r\n\r\n pl.len = l;\r\n pl.lit = im;\r\n\r\n plOffset++;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n\r\nfunction HufDecode(\r\n encodingTable: Array<any>,\r\n decodingTable: Array<any>,\r\n array: Uint8Array,\r\n offset: DataCursor,\r\n ni: number,\r\n rlc: number,\r\n no: number,\r\n outBuffer: Uint16Array,\r\n outOffset: DataCursor\r\n) {\r\n let c = 0;\r\n let lc = 0;\r\n const outBufferEndOffset = no;\r\n const inOffsetEnd = Math.trunc(offset.value + (ni + 7) / 8);\r\n\r\n while (offset.value < inOffsetEnd) {\r\n let gc = GetChar(c, lc, array, offset);\r\n\r\n c = gc.c;\r\n lc = gc.lc;\r\n\r\n while (lc >= HUF_DECBITS) {\r\n const index = (c >> (lc - HUF_DECBITS)) & HUF_DECMASK;\r\n const pl = decodingTable[index];\r\n\r\n if (pl.len) {\r\n lc -= pl.len;\r\n\r\n const gCode = GetCode(pl.lit, rlc, c, lc, array, offset, outBuffer, outOffset, outBufferEndOffset);\r\n if (gCode) {\r\n c = gCode.c;\r\n lc = gCode.lc;\r\n }\r\n } else {\r\n if (!pl.p) {\r\n throw new Error(\"hufDecode issues\");\r\n }\r\n\r\n let j;\r\n\r\n for (j = 0; j < pl.lit; j++) {\r\n const l = HufLength(encodingTable[pl.p[j]]);\r\n\r\n while (lc < l && offset.value < inOffsetEnd) {\r\n gc = GetChar(c, lc, array, offset);\r\n\r\n c = gc.c;\r\n lc = gc.lc;\r\n }\r\n\r\n if (lc >= l) {\r\n if (HufCode(encodingTable[pl.p[j]]) == ((c >> (lc - l)) & ((1 << l) - 1))) {\r\n lc -= l;\r\n\r\n const gCode = GetCode(pl.p[j], rlc, c, lc, array, offset, outBuffer, outOffset, outBufferEndOffset);\r\n\r\n if (gCode) {\r\n c = gCode.c;\r\n lc = gCode.lc;\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (j == pl.lit) {\r\n throw new Error(\"HufDecode issues\");\r\n }\r\n }\r\n }\r\n }\r\n\r\n const i = (8 - ni) & 7;\r\n\r\n c >>= i;\r\n lc -= i;\r\n\r\n while (lc > 0) {\r\n const pl = decodingTable[(c << (HUF_DECBITS - lc)) & HUF_DECMASK];\r\n\r\n if (pl.len) {\r\n lc -= pl.len;\r\n\r\n const gCode = GetCode(pl.lit, rlc, c, lc, array, offset, outBuffer, outOffset, outBufferEndOffset);\r\n if (gCode) {\r\n c = gCode.c;\r\n lc = gCode.lc;\r\n }\r\n } else {\r\n throw new Error(\"HufDecode issues\");\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n\r\n/** @internal */\r\nexport function HufUncompress(array: Uint8Array, dataView: DataView, offset: DataCursor, nCompressed: number, outBuffer: Uint16Array, nRaw: number) {\r\n const outOffset: DataCursor = { value: 0 };\r\n const initialInOffset = offset.value;\r\n\r\n const im = ParseUint32(dataView, offset);\r\n const iM = ParseUint32(dataView, offset);\r\n\r\n offset.value += 4;\r\n\r\n const nBits = ParseUint32(dataView, offset);\r\n\r\n offset.value += 4;\r\n\r\n if (im < 0 || im >= HUF_ENCSIZE || iM < 0 || iM >= HUF_ENCSIZE) {\r\n throw new Error(\"Wrong HUF_ENCSIZE\");\r\n }\r\n\r\n const freq = new Array(HUF_ENCSIZE);\r\n const hdec = new Array(HUF_DECSIZE);\r\n\r\n HufClearDecTable(hdec);\r\n\r\n const ni = nCompressed - (offset.value - initialInOffset);\r\n\r\n HufUnpackEncTable(array, offset, ni, im, iM, freq);\r\n\r\n if (nBits > 8 * (nCompressed - (offset.value - initialInOffset))) {\r\n throw new Error(\"Wrong hufUncompress\");\r\n }\r\n\r\n HufBuildDecTable(freq, im, iM, hdec);\r\n\r\n HufDecode(freq, hdec, array, offset, nBits, iM, nRaw, outBuffer, outOffset);\r\n}\r\n\r\nfunction UInt16(value: number) {\r\n return value & 0xffff;\r\n}\r\n\r\nfunction Int16(value: number) {\r\n const ref = UInt16(value);\r\n return ref > 0x7fff ? ref - 0x10000 : ref;\r\n}\r\n\r\nfunction Wdec14(l: number, h: number) {\r\n const ls = Int16(l);\r\n const hs = Int16(h);\r\n\r\n const hi = hs;\r\n const ai = ls + (hi & 1) + (hi >> 1);\r\n\r\n const as = ai;\r\n const bs = ai - hi;\r\n\r\n return { a: as, b: bs };\r\n}\r\n\r\nfunction Wdec16(l: number, h: number) {\r\n const m = UInt16(l);\r\n const d = UInt16(h);\r\n\r\n const bb = (m - (d >> 1)) & MOD_MASK;\r\n const aa = (d + bb - A_OFFSET) & MOD_MASK;\r\n\r\n return { a: aa, b: bb };\r\n}\r\n\r\n/** @internal */\r\nexport function Wav2Decode(buffer: Uint16Array, j: number, nx: number, ox: number, ny: number, oy: number, mx: number) {\r\n const w14 = mx < 1 << 14;\r\n const n = nx > ny ? ny : nx;\r\n let p = 1;\r\n let p2;\r\n let py;\r\n\r\n while (p <= n) p <<= 1;\r\n\r\n p >>= 1;\r\n p2 = p;\r\n p >>= 1;\r\n\r\n while (p >= 1) {\r\n py = 0;\r\n const ey = py + oy * (ny - p2);\r\n const oy1 = oy * p;\r\n const oy2 = oy * p2;\r\n const ox1 = ox * p;\r\n const ox2 = ox * p2;\r\n let i00, i01, i10, i11;\r\n\r\n for (; py <= ey; py += oy2) {\r\n let px = py;\r\n const ex = py + ox * (nx - p2);\r\n\r\n for (; px <= ex; px += ox2) {\r\n const p01 = px + ox1;\r\n const p10 = px + oy1;\r\n const p11 = p10 + ox1;\r\n\r\n if (w14) {\r\n let result = Wdec14(buffer[px + j], buffer[p10 + j]);\r\n\r\n i00 = result.a;\r\n i10 = result.b;\r\n\r\n result = Wdec14(buffer[p01 + j], buffer[p11 + j]);\r\n\r\n i01 = result.a;\r\n i11 = result.b;\r\n\r\n result = Wdec14(i00, i01);\r\n\r\n buffer[px + j] = result.a;\r\n buffer[p01 + j] = result.b;\r\n\r\n result = Wdec14(i10, i11);\r\n\r\n buffer[p10 + j] = result.a;\r\n buffer[p11 + j] = result.b;\r\n } else {\r\n let result = Wdec16(buffer[px + j], buffer[p10 + j]);\r\n\r\n i00 = result.a;\r\n i10 = result.b;\r\n\r\n result = Wdec16(buffer[p01 + j], buffer[p11 + j]);\r\n\r\n i01 = result.a;\r\n i11 = result.b;\r\n\r\n result = Wdec16(i00, i01);\r\n\r\n buffer[px + j] = result.a;\r\n buffer[p01 + j] = result.b;\r\n\r\n result = Wdec16(i10, i11);\r\n\r\n buffer[p10 + j] = result.a;\r\n buffer[p11 + j] = result.b;\r\n }\r\n }\r\n\r\n if (nx & p) {\r\n const p10 = px + oy1;\r\n let result;\r\n if (w14) {\r\n result = Wdec14(buffer[px + j], buffer[p10 + j]);\r\n } else {\r\n result = Wdec16(buffer[px + j], buffer[p10 + j]);\r\n }\r\n\r\n i00 = result.a;\r\n buffer[p10 + j] = result.b;\r\n\r\n buffer[px + j] = i00;\r\n }\r\n }\r\n\r\n if (ny & p) {\r\n let px = py;\r\n const ex = py + ox * (nx - p2);\r\n\r\n for (; px <= ex; px += ox2) {\r\n const p01 = px + ox1;\r\n let result;\r\n\r\n if (w14) {\r\n result = Wdec14(buffer[px + j], buffer[p01 + j]);\r\n } else {\r\n result = Wdec16(buffer[px + j], buffer[p01 + j]);\r\n }\r\n\r\n i00 = result.a;\r\n buffer[p01 + j] = result.b;\r\n\r\n buffer[px + j] = i00;\r\n }\r\n }\r\n\r\n p2 = p;\r\n p >>= 1;\r\n }\r\n\r\n return py;\r\n}\r\n\r\n/** @internal */\r\nexport function ApplyLut(lut: Uint16Array, data: Uint16Array, nData: number) {\r\n for (let i = 0; i < nData; ++i) {\r\n data[i] = lut[data[i]];\r\n }\r\n}\r\n"]}