Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
audio-decode-wasm
Advanced tools
Note: This doesn't work quite yet, but the structure is drafted out.
A stream that decodes ArrayBuffers into AudioBuffers. The decoders are made in WebAssembly so they are portable (Node.js and browser) and decent speed.
const decoder = require('audio-decode-wasm')
// Obtain codec module and initialize decoder:
const mod = await fetch('wav.wasm').then(req => WebAssembly.compileStreaming(res))
const decode = await decoder(mod)
// Decode ArrayBuffers:
decode(arrayBuf, (err, audioBuf) => {
// ...
})
npm i -D audio-decode-wasm
decoder(mod) -> Promise<decode>
Initializes a decoder from a given [WebAssembly.Module
]. The available ones
can be seen in src/
.
const mod = new WebAssembly.Module(...)
decoder(mod).then(decode => {
// ...
})
decode(arrayBuffer, done)
Decodes arrayBuffer
and calls done(err, audioBuffer)
when finished.
To stop or "reset" the stream send decode(null)
.
const decode = await decoder(mod)
fetch('foo.wav')
.then(res => res.arrayBuffer())
.then(buf => {
decode(buf, (err, audio) => {
// ...
})
})
Promise.all([
decoder(...),
decoder(...)
]).then(([ wav, mp3, ... ]) => {
// ...
})
The decoders are wrote in C and compiled with Emscripten. The code is more restricted than a normal Emscripten runtime so it's cheap to load.
Each C modules has the functions
Context* open(unsigned char* input, float* output)
void process(Context* context, int amount)
From JS you can create the context with _open(input, output)
, where the parameters and return values are pointers on WebAssembly's memory, which JS can access and modify.
The Context
from C looks like:
typedef struct {
unsigned char* input;
float* output;
uint16_t number_of_channels;
uint32_t sample_rate;
unsigned char params;
// ...
} Context;
To construct an AudioBuffer
you need numberOfChannels
and sampleRate
, so JS imports a set_params(int, int)
function which C can call.
The stream routine would look like this:
ArrayBuffer
into WebAssembly's input buffer.Float32Array
s into an AudioBuffer
.Requires Emscripten, Binaryen, and WABT. Then, using make
:
make
to create dist/
make debug
to produce dist/*.wat
make clean
to remove outputFAQs
Decode streams of audio with WebAssembly.
The npm package audio-decode-wasm receives a total of 1 weekly downloads. As such, audio-decode-wasm popularity was classified as not popular.
We found that audio-decode-wasm demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.