# oximedia-web > WebCodecs gives you the frames. OxiMedia gives you what to do with them. `@cooljapan/oximedia-web` is a set of small, independent WebAssembly modules that sit downstream of the browser's own [WebCodecs](https://developer.mozilla.org/en-US/docs/Web/API/WebCodecs_API) decoder. WebCodecs hands you `VideoFrame`s; these modules turn those frames into waveform/vectorscope/histogram scopes, colour grading and tone-mapping, high-quality resampling, and PSNR/SSIM quality metrics — all in Pure Rust, compiled to `wasm32-unknown-unknown`, with no native dependencies and no server round-trip. [![OxiScope — the demo colorist app: all four wasm scopes reading an out-of-gamut test pattern at 30 fps](../docs/assets/oxiscope-hero.png)](https://cooljapan.tech/oxiscope/) **[OxiScope](demo/)** — the bundled colorist demo, with all four scopes reading the out-of-gamut saturation pattern at 30 fps. **[Try it live](https://cooljapan.tech/oxiscope/)** or run [`scripts/serve.sh`](scripts/serve.sh) locally; the badge in the header counts the bytes uploaded: 0, because nothing ever leaves the page. This is a nested Cargo workspace inside the OxiMedia monorepo (`/web`, excluded from the root workspace) and a separate, independently versioned npm package — `package.json` is filled in and `dist/` builds cleanly, but **it has not been published to npm yet** (see [Quick start](#quick-start) for how to use it locally today). It does not depend on the native `oximedia-*` crates; see [Implementation strategy](#implementation-strategy) below for why. ## Patents OxiMedia implements zero patent-encumbered codecs — not one line. H.264/H.265/AAC decode and encode are performed by the browser, whose vendor already holds the licence — exactly as `