Building/Compiling Opus (libopus) 在 Emscripten 中优化

Building/Compiling Opus (libopus) In Emscripten with Optimization

是否可以 build/compile Opus/libopus 使用 Emscripten 进行优化?我不确定这是否是 Emscripten 和 WebAssembly 的一般当前限制,或者是否存在确保解码器优化的选项在 WebAssembly (wasm) 中。


我收到以下 opus_decoder 的警告:

  CC       src/opus_decoder.lo
src/opus_decoder.c:37:10: warning: You appear to be compiling without optimization, if so
opus will be very slow. [-W#pragma-messages]

在没有 Emscripten 包装器的情况下正常编译 Opus 时不会产生此警告:

$ ./configure --disable-intrinsics --disable-rtcd
$ make

换行时引入警告:

$ emconfigure ./configure --disable-intrinsics --disable-rtcd
$ emmake make

使用:

好吧,你是 运行 它在 emscripten 中,所以无论如何它都不会很快......:)

问题是,如果您假装是 gcc 但实际上不是 x86 目标,您就会收到此消息。

您可以忽略该消息(优化似乎仅适用于 x86)或定义 OPUS_WILL_BE_SLOW (-DOPUS_WILL_BE_SLOW) 使其消失。

我还没有测试过 webassembly,但我过去使用 emscripten 编译来创建要与 asm.js 一起使用的代码,并且我已经将此选项用于 emcc

EMCC_OPTS=-O3 --memory-init-file 0 -s BUILD_AS_WORKER=1 -s NO_EXIT_RUNTIME=1 -s NO_FILESYSTEM=1 -s EXPORTED_FUNCTIONS="['_malloc']" -s EXPORTED_RUNTIME_METHODS="['setValue', 'getValue']"

您可以像这样将 CFLAGS 传入配置步骤:

emconfigure ./configure --disable-intrinsics --disable-rtcd CFLAGS='-O2'

这将启用优化并隐藏消息。