# Neocodec commercial FFmpeg 9.0 build

Run the canonical recipe from an Apple-silicon Mac:

```text
./build-commercial-ffmpeg.sh /absolute/output/directory
```

The repository wrapper `scripts/build-commercial-ffmpeg.sh` calls this recipe and adds the
separately pinned gifsicle helper. The build requires macOS, arm64, Apple clang, Make,
CMake, Ninja, pkg-config, `tar`, `lipo`, `otool`, and `codesign`.

The recipe:

- verifies all five compiled source archives against committed SHA-256 values;
- uses the fixed path `/private/tmp/neocodec-commercial-ffmpeg-build-1785797913` and
  `SOURCE_DATE_EPOCH=1785797913` so diagnostic source paths and archive time are stable;
- builds x264, SVT-AV1, libvpx (VP9 only), and Opus as static arm64 dependencies;
- configures FFmpeg with dependency autodetection and network/capture/output devices off;
- enables H.264 (x264 and VideoToolbox), AV1 (SVT-AV1), VP9 (libvpx), Opus, native AAC,
  GIF/PNG, and the app's required filters/muxers;
- does not compile/link x265 and disables HEVC encoding and decoding;
- requires exact version `9.0-neocodec-commercial`, arm64-only Mach-O output, deployment
  target 14.0, and Apple-system-only dynamic linkage before copying either helper.

The exact accepted `ffmpeg -version` output is recorded in
`commercial-configure-flags.txt` after the reproducibility run. `package-corresponding-source.py`
then emits the complete source set as the deterministic, collision-free public object
`../neocodec-ffmpeg-9.0-commercial-source.tar.xz`. That single object avoids basename
collisions with the historical FFmpeg 8.1.2 source set in the site's flat `/source`
namespace; the old source remains published while its binaries remain downloadable.
