# FFmpeg WebAssembly Corresponding Source

This archive accompanies the reviewed single-thread and multithread FFmpeg
WebAssembly core profile distributed by av-tools. The profile retains the
upstream core version 0.12.10 and FFmpeg n5.1.4 identities, but it is rebuilt
from source rather than copied from the published `@ffmpeg/core` packages.

`SOURCE_LOCK.json` records the immutable Git commit for ffmpeg.wasm, FFmpeg and
every external library selected by the upstream v12.15 build. The source trees
are stored under `sources/`. In particular, the upstream branch names
`4-cores` and `master` have been resolved to the commits from which the
published core was built; neither branch changed between its recorded commit
and the upstream core release.

The original build-control files are in `sources/ffmpeg.wasm/`, including:

- `Dockerfile`;
- `Makefile`;
- `build/ffmpeg.sh`;
- `build/ffmpeg-wasm.sh`;
- the other dependency scripts under `build/`.

The build uses Emscripten SDK 3.1.40 and FFmpeg n5.1.4. Its one source patch
applies upstream ffmpeg.wasm commit
`b409e36475bc21f0451b5b1e1d126fa82871439a`, which raises the Emscripten stack
to 5 MiB and fixes the libopus encode failure reported upstream. The tracked
`scripts/build-reviewed-ffmpeg-core.sh` driver in the matching av-tools source
release also isolates optional host dependencies and records the exact
toolchain identities. The generated assets' exact sizes, hashes and embedded
configure arguments are recorded in the application's `SOURCE.md`,
`scripts/reviewed-ffmpeg-core-lock.json` and `docs/FFMPEG_BUILD.md`.

The source archive preserves each component's own licence and copyright
notices. av-tools itself is distributed separately under
GPL-3.0-or-later. Codec patent permissions, where required, are separate from
copyright licences.

To fetch and verify an identity:

```sh
git init source-check
git -C source-check fetch --depth 1 <repository> <revision>
test "$(git -C source-check rev-parse FETCH_HEAD)" = "<revision>"
```

The included ffmpeg.wasm Dockerfile documents the historical upstream build,
but still names remote tags and branches. For the distributed reviewed
profile, use this archive together with the matching av-tools source release
and invoke its `scripts/build-reviewed-ffmpeg-core.sh` driver. The bundled
`sources/zimg/` tree already contains its pinned GoogleTest submodule at
`test/extra/googletest/`.

General-purpose build tooling such as Git, Docker/BuildKit and the Emscripten
3.1.40 container image is not copied into this archive.
