SDK 0.7.2a1 · LINUX CPU · 11 NOVEMBER 2026

AI watermarking on CPU.
Measured.

Complete SDK export and verification measurements from the frozen, qualified 0.7.2a1 Docker image. Export includes watermarking, development C2PA signing and the SDK's read-back gate. Verify is a separate SDK call on the intact signed output.

The measured files

First job and resident repeats

Input / profileFirst exportWarm export rangeWarm export CPU, medianWarm Verify rangeSession memory peak
PNG image4.49 s0.73–0.74 s1.10 CPU s0.14–0.14 s510 MiB
Economy5s10.63 s9.08–9.10 s13.24 CPU s1.39–1.40 s763 MiB
Economy2s15.10 s13.76–13.89 s21.54 CPU s1.38–1.42 s750 MiB
Resilient112.15 s103.77–105.11 s184.67 CPU s1.38–1.40 s858 MiB

One first job in a fresh process, followed by two exports using the same SDK and resident workers. This is three observations per row, not a statistical estimate of real-world throughput. All 12 exports passed their read-back gate; all 12 separate verification calls recovered their expected ID.

What the numbers include

How to use this

Economy profiles reduce inference while still decoding and encoding the full video. Resilient spends substantially more compute on fresh per-frame marking. Choose a profile using your own content, short-clip requirements and delivery transformations, not these speed figures alone.

Verification here used intact SDK exports. These timings do not characterize a metadata-stripped blind scan, a long negative scan or resistance to cropping and removal. Recovery of these twelve expected IDs is not a general detection rate or compliance determination.

Inspect and reproduce

Download raw measurements and exact hashes ↗
Download the server-side measurement script ↗

Prepare /bench/input.png and /bench/input.mp4 in a writable benchmark directory. Run the script in a new container for each argument: image, economy_5s, economy_2s, resilient. Set BENCH_IMAGE_ID to the image identity you actually run, mount that directory at /bench, and apply the same CPU/memory limits. Keep network disabled during measurement; provision the pinned runtime first using the release quickstart. A new run needs new output directories.

ffmpeg -f lavfi -i testsrc2=size=1280x720:rate=30 -t 10 \
  -c:v libx264 -threads 2 -preset fast -crf 20 -pix_fmt yuv420p input.mp4

Record your own input hashes and runtime alongside results. The raw data records the source hashes and probe metadata used for this run. The image source remains in the editable website project; use an image you can share for your own reproduction.

Read the video-profile limitations ↗ · Plan operating costs ↗ · Check the real hero image ↗