Skip to content

Commit b926b8d

Browse files
authored
Merge pull request #167 from chris-rudmin/lower-latency
Lower latency
2 parents 7ac622e + 59620f8 commit b926b8d

18 files changed

+60122
-41476
lines changed

.gitmodules

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[submodule "opus"]
22
path = opus
33
url = https://git.xiph.org/opus.git
4-
branch = v1.2.1
4+
branch = v1.3
55
[submodule "speexdsp"]
66
path = speexdsp
77
url = https://git.xiph.org/speexdsp.git

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ A javascript library to encode the output of Web Audio API nodes in Ogg Opus or
55

66
#### Libraries Used
77

8-
- Libopus: v1.2.1 compiled with emscripten 1.38.11
9-
- speexDSP: 1.2RC3 compiled with emscripten 1.38.11
8+
- Libopus: v1.3 compiled with emscripten 1.38.15
9+
- speexDSP: 1.2RC3 compiled with emscripten 1.38.15
1010

1111
#### Required Files
1212

dist-unminified/decoderWorker.js

+115-12
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,6 @@ ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONME
184184
// 2) We could be the application main() thread proxied to worker. (with Emscripten -s PROXY_TO_WORKER=1) (ENVIRONMENT_IS_WORKER == true, ENVIRONMENT_IS_PTHREAD == false)
185185
// 3) We could be an application pthread running in a worker. (ENVIRONMENT_IS_WORKER == true and ENVIRONMENT_IS_PTHREAD == true)
186186

187-
188187
// `/` should be present at the end if `scriptDirectory` is not empty
189188
var scriptDirectory = '';
190189
function locateFile(path) {
@@ -351,6 +350,8 @@ for (key in moduleOverrides) {
351350
// reclaim data used e.g. in memoryInitializerRequest, which is a large typed array.
352351
moduleOverrides = undefined;
353352

353+
// perform assertions in shell.js after we set up out() and err(), as otherwise if an assertion fails it cannot print the message
354+
354355

355356

356357
// Copyright 2017 The Emscripten Authors. All rights reserved.
@@ -1551,10 +1552,6 @@ function integrateWasmJS() {
15511552
updateGlobalBufferViews();
15521553
}
15531554

1554-
function fixImports(imports) {
1555-
return imports;
1556-
}
1557-
15581555
function getBinary() {
15591556
try {
15601557
if (Module['wasmBinary']) {
@@ -1711,8 +1708,6 @@ function integrateWasmJS() {
17111708
// doesn't need to care that it is wasm or olyfilled wasm or asm.js.
17121709

17131710
Module['asm'] = function(global, env, providedBuffer) {
1714-
env = fixImports(env);
1715-
17161711
// import table
17171712
if (!env['table']) {
17181713
var TABLE_SIZE = Module['wasmTableSize'];
@@ -1763,7 +1758,7 @@ var ASM_CONSTS = [];
17631758

17641759
STATIC_BASE = GLOBAL_BASE;
17651760

1766-
STATICTOP = STATIC_BASE + 30192;
1761+
STATICTOP = STATIC_BASE + 38304;
17671762
/* global initializers */ __ATINIT__.push();
17681763

17691764

@@ -1772,7 +1767,7 @@ STATICTOP = STATIC_BASE + 30192;
17721767

17731768

17741769

1775-
var STATIC_BUMP = 30192;
1770+
var STATIC_BUMP = 38304;
17761771
Module["STATIC_BASE"] = STATIC_BASE;
17771772
Module["STATIC_BUMP"] = STATIC_BUMP;
17781773

@@ -1814,10 +1809,93 @@ function copyTempDouble(ptr) {
18141809
// {{PRE_LIBRARY}}
18151810

18161811

1812+
1813+
var SYSCALLS={buffers:[null,[],[]],printChar:function (stream, curr) {
1814+
var buffer = SYSCALLS.buffers[stream];
1815+
assert(buffer);
1816+
if (curr === 0 || curr === 10) {
1817+
(stream === 1 ? out : err)(UTF8ArrayToString(buffer, 0));
1818+
buffer.length = 0;
1819+
} else {
1820+
buffer.push(curr);
1821+
}
1822+
},varargs:0,get:function (varargs) {
1823+
SYSCALLS.varargs += 4;
1824+
var ret = HEAP32[(((SYSCALLS.varargs)-(4))>>2)];
1825+
return ret;
1826+
},getStr:function () {
1827+
var ret = Pointer_stringify(SYSCALLS.get());
1828+
return ret;
1829+
},get64:function () {
1830+
var low = SYSCALLS.get(), high = SYSCALLS.get();
1831+
if (low >= 0) assert(high === 0);
1832+
else assert(high === -1);
1833+
return low;
1834+
},getZero:function () {
1835+
assert(SYSCALLS.get() === 0);
1836+
}};function ___syscall140(which, varargs) {SYSCALLS.varargs = varargs;
1837+
try {
1838+
// llseek
1839+
var stream = SYSCALLS.getStreamFromFD(), offset_high = SYSCALLS.get(), offset_low = SYSCALLS.get(), result = SYSCALLS.get(), whence = SYSCALLS.get();
1840+
// NOTE: offset_high is unused - Emscripten's off_t is 32-bit
1841+
var offset = offset_low;
1842+
FS.llseek(stream, offset, whence);
1843+
HEAP32[((result)>>2)]=stream.position;
1844+
if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null; // reset readdir state
1845+
return 0;
1846+
} catch (e) {
1847+
if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);
1848+
return -e.errno;
1849+
}
1850+
}
1851+
1852+
1853+
function flush_NO_FILESYSTEM() {
1854+
// flush anything remaining in the buffers during shutdown
1855+
var fflush = Module["_fflush"];
1856+
if (fflush) fflush(0);
1857+
var buffers = SYSCALLS.buffers;
1858+
if (buffers[1].length) SYSCALLS.printChar(1, 10);
1859+
if (buffers[2].length) SYSCALLS.printChar(2, 10);
1860+
}function ___syscall146(which, varargs) {SYSCALLS.varargs = varargs;
1861+
try {
1862+
// writev
1863+
// hack to support printf in FILESYSTEM=0
1864+
var stream = SYSCALLS.get(), iov = SYSCALLS.get(), iovcnt = SYSCALLS.get();
1865+
var ret = 0;
1866+
for (var i = 0; i < iovcnt; i++) {
1867+
var ptr = HEAP32[(((iov)+(i*8))>>2)];
1868+
var len = HEAP32[(((iov)+(i*8 + 4))>>2)];
1869+
for (var j = 0; j < len; j++) {
1870+
SYSCALLS.printChar(stream, HEAPU8[ptr+j]);
1871+
}
1872+
ret += len;
1873+
}
1874+
return ret;
1875+
} catch (e) {
1876+
if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);
1877+
return -e.errno;
1878+
}
1879+
}
1880+
1881+
function ___syscall6(which, varargs) {SYSCALLS.varargs = varargs;
1882+
try {
1883+
// close
1884+
var stream = SYSCALLS.getStreamFromFD();
1885+
FS.close(stream);
1886+
return 0;
1887+
} catch (e) {
1888+
if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);
1889+
return -e.errno;
1890+
}
1891+
}
1892+
18171893
function _abort() {
18181894
Module['abort']();
18191895
}
18201896

1897+
1898+
18211899
var _llvm_cos_f64=Math_cos;
18221900

18231901
var _llvm_ctlz_i32=true;
@@ -1910,9 +1988,31 @@ function intArrayToString(array) {
19101988

19111989

19121990

1913-
Module['wasmTableSize'] = 8;
1991+
Module['wasmTableSize'] = 14;
1992+
1993+
Module['wasmMaxTableSize'] = 14;
1994+
1995+
function invoke_ii(index,a1) {
1996+
var sp = stackSave();
1997+
try {
1998+
return Module["dynCall_ii"](index,a1);
1999+
} catch(e) {
2000+
stackRestore(sp);
2001+
if (typeof e !== 'number' && e !== 'longjmp') throw e;
2002+
Module["setThrew"](1, 0);
2003+
}
2004+
}
19142005

1915-
Module['wasmMaxTableSize'] = 8;
2006+
function invoke_iiii(index,a1,a2,a3) {
2007+
var sp = stackSave();
2008+
try {
2009+
return Module["dynCall_iiii"](index,a1,a2,a3);
2010+
} catch(e) {
2011+
stackRestore(sp);
2012+
if (typeof e !== 'number' && e !== 'longjmp') throw e;
2013+
Module["setThrew"](1, 0);
2014+
}
2015+
}
19162016

19172017
function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6) {
19182018
var sp = stackSave();
@@ -1927,13 +2027,14 @@ function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6) {
19272027

19282028
Module.asmGlobalArg = {};
19292029

1930-
Module.asmLibraryArg = { "abort": abort, "assert": assert, "enlargeMemory": enlargeMemory, "getTotalMemory": getTotalMemory, "abortOnCannotGrowMemory": abortOnCannotGrowMemory, "invoke_iiiiiii": invoke_iiiiiii, "___setErrNo": ___setErrNo, "_abort": _abort, "_emscripten_memcpy_big": _emscripten_memcpy_big, "_llvm_cos_f64": _llvm_cos_f64, "_llvm_exp_f64": _llvm_exp_f64, "_llvm_fabs_f32": _llvm_fabs_f32, "_llvm_floor_f32": _llvm_floor_f32, "_llvm_sin_f64": _llvm_sin_f64, "_llvm_sqrt_f32": _llvm_sqrt_f32, "_llvm_sqrt_f64": _llvm_sqrt_f64, "_llvm_stackrestore": _llvm_stackrestore, "_llvm_stacksave": _llvm_stacksave, "DYNAMICTOP_PTR": DYNAMICTOP_PTR, "tempDoublePtr": tempDoublePtr, "STACKTOP": STACKTOP, "STACK_MAX": STACK_MAX };
2030+
Module.asmLibraryArg = { "abort": abort, "assert": assert, "enlargeMemory": enlargeMemory, "getTotalMemory": getTotalMemory, "abortOnCannotGrowMemory": abortOnCannotGrowMemory, "invoke_ii": invoke_ii, "invoke_iiii": invoke_iiii, "invoke_iiiiiii": invoke_iiiiiii, "___setErrNo": ___setErrNo, "___syscall140": ___syscall140, "___syscall146": ___syscall146, "___syscall6": ___syscall6, "_abort": _abort, "_emscripten_memcpy_big": _emscripten_memcpy_big, "_llvm_cos_f64": _llvm_cos_f64, "_llvm_exp_f64": _llvm_exp_f64, "_llvm_fabs_f32": _llvm_fabs_f32, "_llvm_floor_f32": _llvm_floor_f32, "_llvm_sin_f64": _llvm_sin_f64, "_llvm_sqrt_f32": _llvm_sqrt_f32, "_llvm_sqrt_f64": _llvm_sqrt_f64, "_llvm_stackrestore": _llvm_stackrestore, "_llvm_stacksave": _llvm_stacksave, "flush_NO_FILESYSTEM": flush_NO_FILESYSTEM, "DYNAMICTOP_PTR": DYNAMICTOP_PTR, "tempDoublePtr": tempDoublePtr, "STACKTOP": STACKTOP, "STACK_MAX": STACK_MAX };
19312031
// EMSCRIPTEN_START_ASM
19322032
var asm =Module["asm"]// EMSCRIPTEN_END_ASM
19332033
(Module.asmGlobalArg, Module.asmLibraryArg, buffer);
19342034

19352035
Module["asm"] = asm;
19362036
var _free = Module["_free"] = function() { return Module["asm"]["_free"].apply(null, arguments) };
2037+
var _llvm_bswap_i32 = Module["_llvm_bswap_i32"] = function() { return Module["asm"]["_llvm_bswap_i32"].apply(null, arguments) };
19372038
var _malloc = Module["_malloc"] = function() { return Module["asm"]["_malloc"].apply(null, arguments) };
19382039
var _memcpy = Module["_memcpy"] = function() { return Module["asm"]["_memcpy"].apply(null, arguments) };
19392040
var _memmove = Module["_memmove"] = function() { return Module["asm"]["_memmove"].apply(null, arguments) };
@@ -1953,6 +2054,8 @@ var setThrew = Module["setThrew"] = function() { return Module["asm"]["setThrew
19532054
var stackAlloc = Module["stackAlloc"] = function() { return Module["asm"]["stackAlloc"].apply(null, arguments) };
19542055
var stackRestore = Module["stackRestore"] = function() { return Module["asm"]["stackRestore"].apply(null, arguments) };
19552056
var stackSave = Module["stackSave"] = function() { return Module["asm"]["stackSave"].apply(null, arguments) };
2057+
var dynCall_ii = Module["dynCall_ii"] = function() { return Module["asm"]["dynCall_ii"].apply(null, arguments) };
2058+
var dynCall_iiii = Module["dynCall_iiii"] = function() { return Module["asm"]["dynCall_iiii"].apply(null, arguments) };
19562059
var dynCall_iiiiiii = Module["dynCall_iiiiiii"] = function() { return Module["asm"]["dynCall_iiiiiii"].apply(null, arguments) };
19572060
;
19582061

dist-unminified/decoderWorker.wasm

21.6 KB
Binary file not shown.

0 commit comments

Comments
 (0)