Third-party licences

Read this if you must clear the licences of the models and libraries Laidline runs before you deploy it. You will see each component, its code and weight licences and how Laidline gets it. Skip if you want the terms of Laidline itself (Laidline Source-Available Licence). Time: 5 minutes. Needs: nothing installed.

In short

  • Laidline is source-available under the Laidline Source-Available Licence (the LICENSE file in the package); the models and libraries it runs keep their own licences.
  • The watermark models (TrustMark, AudioSeal, VideoSeal, PixelSeal) are MIT for code and weights.
  • The AudioSeal, VideoSeal, PixelSeal and TrustMark weights are MIT, the same licence as their code: there are no separate terms, no gating and no acceptance step. Laidline fetches the AudioSeal, VideoSeal and PixelSeal weights unmodified, SHA-256 pinned (the TrustMark weights ship with its package), and carries the licence texts in THIRD_PARTY_NOTICES.
  • The PyPI build of PyAV bundles FFmpeg with the GPL libraries libx264 and libx265, which the video path uses by default; an install whose FFmpeg and PyAV have no GPL parts (OpenH264 instead of x264) exists, and H.264 encoding raises an AVC patent question for your counsel (FFmpeg and H.264).
  • Benchmark datasets and models apply only if you install the separate laidline-bench package.

Laidline (the laidline package) is source-available under the Laidline Source-Available Licence; see the LICENSE file. The models and libraries it runs keep their own licences.

Models and code used when marking

Component Code Weights Licence read on How Laidline gets it
TrustMark (Adobe) MIT MIT 2026-10-26 trustmark package; the Docker images bake the Q, B and C weights in
TrustMark Q decoder, ONNX FP32 graph (decoder_Q.fp32.onnx) n/a Laidline's conversion of the MIT TrustMark weights (MIT) 2026-10-26 (the TrustMark licence) sha256 1e641de38ee1c6ca71a000a25ffef919e741691e5902cb7e3e28f19f6bd55f9e, 94,773,826 bytes, pinned in laidline/models/pins.json, with the URL of Laidline's weights mirror, https://laidline.com/models/trustmark/decoder_Q.fp32.onnx (tried after LAIDLINE_MODELS_MIRROR, if set). Fetched on the keyframe reader's first use (not when LAIDLINE_OFFLINE=1) and checked against the pin; read from $LAIDLINE_HOME/models/trustmark/ or beside the TrustMark package's weights; shipped in the Laidline Docker images (installed at build time after its sha256 is checked). Without it (offline, or the mirror unreachable) the keyframe reader runs Q on torch with a warning (video.trustmark_runtime). laidline models fetch does not fetch it
ONNX Runtime (onnxruntime 1.24.4) MIT 2026-10-26 (package metadata) Python package (image and video extras); runs the graph above in the keyframe reader
AudioSeal (Meta) MIT MIT. The repository LICENSE is MIT, and its README says: "We have updated our license to full MIT license (including the license for the model weights)" (entry of 2024-04-02, replacing the earlier terms). The Hugging Face card of facebook/audioseal declares license: mit at the revision (3c19eba5…) that laidline/models/pins.json pins; the audioseal 0.2.0 package on PyPI carries the classifier "MIT License" 2026-10-31 (repository LICENSE, README, card and PyPI metadata) audioseal package; weights downloaded on first use, SHA-256 pinned
VideoSeal (Meta) MIT MIT 2026-10-26 (package LICENSE) inference code vendored at 870ca7f in laidline/watermark/video/_videoseal with its LICENSE; weights downloaded on first use, SHA-256 pinned
PixelSeal (Meta; the pixelseal card of VideoSeal, arXiv 2512.16874): the default image scheme MIT (the vendored VideoSeal code) MIT (the videoseal LICENSE at 870ca7f and its README: "The model is licensed under an MIT license") 2026-10-26 (package LICENSE) card vendored under _videoseal/cards/pixelseal.yaml; the checkpoint pixelseal/checkpoint.pth (1.24 GB, 1,237,429,197 bytes, SHA-256 pinned in laidline/models/pins.json, outside videoseal/) downloaded on first use or by laidline models fetch (--no-audio --no-video for the image weights alone), then slimmed once to its model weights (pixelseal/model.pth, 308,954,883 bytes, with a sidecar naming the pinned SHA-256 and its own). The pinned URL is not version-addressed: the SHA-256 makes a changed upstream file fail closed (weights_corrupt), but fresh installs would then fail until the pin is updated; an install that ran laidline models fetch --no-audio --no-video keeps its verified slim copy
SynthID-text Apache-2.0 none (keyed algorithm) n/a (implemented in-tree) detector implemented in-tree
c2pa-rs (through c2pa-python) Apache-2.0 / MIT 2026-10-26 (package metadata) Python package

AudioSeal, VideoSeal and PixelSeal weights are never baked into an image: they download into $LAIDLINE_HOME/models on first use, or when you run laidline models fetch. The weights are MIT, the same licence as the code, with no separate terms, no gating and no acceptance step. Laidline fetches each file unmodified, from the URL pinned in the package (upstream for the Meta weights, Laidline's mirror at https://laidline.com/models for the TrustMark Q decoder graph) or, when you set LAIDLINE_MODELS_MIRROR, from that mirror first, and checks it against the pinned SHA-256 either way. The mirror is a convenience: the pinned SHA-256 is what you trust, so a file that does not match is refused wherever it came from. The MIT notices for AudioSeal, VideoSeal, PixelSeal and TrustMark ship in the package's THIRD_PARTY_NOTICES file (in the wheel's dist-info/licenses directory and, in the Docker images, at /usr/share/doc/laidline/THIRD_PARTY_NOTICES).

FFmpeg and H.264

Facts as read on 2026-10-26 from the wheels and the projects' own pages; this is not legal advice, and how they apply to the way you distribute Laidline is a question for your counsel.

  • The PyPI wheel. The PyAV 18.1.0 wheels for Linux bundle FFmpeg together with libx264 and libx265 in av.libs/ (also libmp3lame, libopus, libvpx, dav1d, SVT-AV1, libwebp and gnutls, among others). x264 and x265 are published under GPL-2.0-or-later (x264 and x265 also offer commercial licences from their owners). Laidline's video path encodes with libx264 unless watermark.video.encoder says otherwise.
  • How that FFmpeg reports its licence. The wheels' FFmpeg is configured without --enable-gpl and with --enable-version3, and its build patches FFmpeg's configure to move libx264 and libx265 off the list of libraries that require --enable-gpl; the bundled libavcodec reports "LGPL version 3 or later". FFmpeg's own LICENSE.md says that combining FFmpeg with libx264 or libx265 requires --enable-gpl, which makes FFmpeg GPL version 2 or later.
  • Notices. The wheel declares BSD-3-Clause (PyAV's own code) and ships PyAV's licence only: no licence texts or notices for FFmpeg or the libraries it bundles. PyAV's documentation gives no written licence statement for the wheel's contents.
  • A route without x264 and x265. conda-forge publishes FFmpeg in a gpl variant (with x264 and x265) and an lgpl variant; pinning ffmpeg=*=lgpl* selects the FFmpeg configured with --disable-gpl and --enable-version3 (it reports LGPL version 3), which includes OpenH264 built from source and no x264 or x265, and conda-forge's PyAV is built against it (Video: Encoding without x264 has the recipe and the watermark.video.encoder: libopenh264 setting). This covers the FFmpeg and PyAV, not the whole environment: its other packages keep their own licences (conda-forge's Python depends on GNU readline, GPL-3.0), and each package's licence is the license field of its record in the environment's conda-meta/ directory. OpenH264's source is BSD-2-Clause. FFmpeg's own LGPL checklist (ffmpeg.org/legal.html) lists what distributing an LGPL FFmpeg asks for.
  • The AVC/H.264 patent pool. Cisco pays the pool's royalties only for its own OpenH264 binary, downloaded separately to the end user's device under the conditions of its binary licence; for a build from source, such as conda-forge's, Cisco's FAQ says the party using it is responsible for any licence fees. The pool (administered by Via LA) was still operating when read, and community-maintained expiry lists show some of its US patents running to 2030. The patent question applies to H.264 encoding with any encoder, libx264 included; whether a licence is needed for your use is for your counsel.

What Laidline distributes, and which notices follow

Read on 2026-10-31; this is not legal advice.

  • Wheels and sdists on PyPI. Building laidline 1.0.0 (uv build --package laidline) gives a pure-Python wheel and an sdist. Neither contains a compiled library, FFmpeg, PyAV, x264, x265 or OpenH264, in code or binary form, and the other packages under packages/ hold Python and text only. av appears only as a dependency of the audio and video extras: pip fetches PyAV (and the FFmpeg and codec libraries inside its wheel) straight from PyPI, from PyAV's own publisher. Laidline passes nothing of theirs on, so no FFmpeg, PyAV, x264 or OpenH264 notice is owed for the wheels and sdists. What the wheel does carry is covered: LICENSE, THIRD_PARTY_NOTICES (AudioSeal, VideoSeal and PixelSeal, TrustMark) and the vendored VideoSeal's own LICENSE. THIRD_PARTY_NOTICES also names PyAV and FFmpeg by reference.
  • OpenH264. Laidline neither bundles nor downloads Cisco's binary. The conda-forge route in Video: Encoding without x264 installs an FFmpeg and an OpenH264 built from source by conda-forge, on your machine, so the notices and the patent question there are yours.
  • Docker images. deploy/docker/Dockerfile.cpu and Dockerfile.cuda install Debian's ffmpeg package with apt-get. Debian builds it with --enable-gpl and libx265 (and libx264 where available), and its copyright file says the resulting binaries are licensed GPL v2 or later. No image is published: the release workflow uploads PyPI packages only, and Laidline publishes no image. If an image is ever given to anyone, the distributor must pass on the GPL terms of those packages: keep Debian's /usr/share/doc/*/copyright files in the image, and offer the corresponding source (Debian's source packages at sources.debian.org). That would be a new release step, not an edit to THIRD_PARTY_NOTICES.
  • If you distribute a build of your own (an image, an installer or a bundle that contains FFmpeg, PyAV or a codec library), the notices of those components are your obligation, and the conda-forge lgpl route above is the one without GPL parts.

Patents and indemnity

The MIT licence carries no express patent grant. The watermarking field has patent holders who are unrelated to the authors of the models Laidline runs. What the indemnity in clause 19 of the Customer Licence Agreement covers is set by the text of that clause; read it there.

laidline-bench

These rows apply only when you install the separate laidline-bench package (pip install laidline-bench). Laidline itself does not ship, download or need any of them to mark or detect. The benchmark package downloads them when you ask it to, never the library. Only aggregate results are published for these datasets: no audio, video or text from them is redistributed. PixelSeal is also a product dependency, listed in the table above.

Item Licence Used in
LibriSpeech test-clean CC BY 4.0 (Panayotov, Chen, Povey, Khudanpur, 2015; OpenSLR SLR12) audio robustness (speech)
LibriSpeech test-other CC BY 4.0 (Panayotov, Chen, Povey, Khudanpur, 2015; OpenSLR SLR12) calibration of the hardened audio decode (unmarked speech)
LibriSpeech dev-clean CC BY 4.0 (Panayotov, Chen, Povey, Khudanpur, 2015; OpenSLR SLR12) calibration of the hardened audio decode's fast phase grid (unmarked speech)
LibriSpeech train-clean-100 CC BY 4.0 (Panayotov, Chen, Povey, Khudanpur, 2015; OpenSLR SLR12; licence read at https://www.openslr.org/12/, archive md5 checked against OpenSLR's published list) the fast hardened audio search's fit, acceptance and unmarked sets; audio fingerprint measurement
LJ Speech 1.1 Public Domain (read at https://keithito.com/LJ-Speech-Dataset/) audio fingerprint measurement (one-voice nulls)
CSTR VCTK Corpus 0.92 CC BY 4.0 (its license_text.txt, read at https://datashare.ed.ac.uk/handle/10283/3443); only the rainbow passage and elicitation paragraph (mic1) are read from the zip audio fingerprint measurement (same-passage nulls, validation only)
Open Goldberg Variations (Kimiko Ishizaka) CC0 audio robustness (music)
Xiph.org derf test sequences terms vary by sequence; Xiph offers the collection for research and testing; the clips are not redistributed video robustness
YouTube UGC dataset, H.264 CRF 10 originals (Google, https://media.withyoutube.com/) CC BY 4.0 per video (the dataset page: "shared under Creative Commons CC BY license"; the ATTRIBUTION file names each video's title, author and "licensed under CC BY 4.0"); 872 sources at 360p to 1080p outside the HDR and VR categories, each with URL, licence, title and author in the manifest the benchmark package carries the second unmarked video corpus (false decodes of the hardened video paths)
EnCodec 24 kHz weights (facebook/encodec_24khz) Treated as CC BY-NC 4.0, the licence Laidline recorded for the weights. On 2026-10-31 the facebookresearch/encodec repository carried an MIT LICENSE for the code and no weights licence file, its README names no weights licence, and the Hugging Face card states none; so no licence for the weights could be confirmed from a primary source, and non-commercial terms are assumed audio robustness, the encodec_6 transform only
Mimi (kyutai/mimi) CC BY 4.0: the kyutai/mimi card declares license: cc-by-4.0 and says "License: CC-BY" (read 2026-10-31) audio robustness, the mimi transform only
COCO val2017 per the COCO terms image robustness and phantom rate
PixelSeal (Meta; the pixelseal card of VideoSeal) MIT for code and weights (see the table above) the PixelSeal evaluation and the product-scheme benchmark; the same pinned checkpoint and slimmed weights as the image scheme
C4 realnewslike validation shard (allenai/c4 on the Hugging Face hub, revision 1588ec45) ODC-BY 1.0 (the dataset card also points to the Common Crawl terms of use) text robustness (prompts, human controls, the embed_25 filler)
Qwen2.5-0.5B-Instruct (Qwen/Qwen2.5-0.5B-Instruct) Apache-2.0 text robustness, the generating model (and the paraphrase transform)
MarianMT Helsinki-NLP/opus-mt-en-de CC BY 4.0 (its Hugging Face card) text robustness, the translate_rt transform only
MarianMT Helsinki-NLP/opus-mt-de-en Apache-2.0 (its Hugging Face card) text robustness, the translate_rt transform only
sentencepiece Apache-2.0 the Marian tokenizers of translate_rt; an extra dependency of that transform alone

Reference