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
LICENSEfile 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-benchpackage.
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 unlesswatermark.video.encodersays otherwise. - How that FFmpeg reports its licence. The wheels' FFmpeg is configured without
--enable-gpland with--enable-version3, and its build patches FFmpeg'sconfigureto move libx264 and libx265 off the list of libraries that require--enable-gpl; the bundled libavcodec reports "LGPL version 3 or later". FFmpeg's ownLICENSE.mdsays 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
gplvariant (with x264 and x265) and anlgplvariant; pinningffmpeg=*=lgpl*selects the FFmpeg configured with--disable-gpland--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 thewatermark.video.encoder: libopenh264setting). 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 thelicensefield of its record in the environment'sconda-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
laidline1.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 underpackages/hold Python and text only.avappears only as a dependency of theaudioandvideoextras:pipfetches 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 ownLICENSE.THIRD_PARTY_NOTICESalso 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.cpuandDockerfile.cudainstall Debian'sffmpegpackage withapt-get. Debian builds it with--enable-gpland 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/*/copyrightfiles 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 toTHIRD_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
lgplroute 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
- Configuration: the
video.trustmark_runtimekey and the model locations - Command line:
laidline models fetchdownloads the pinned weights ahead of time - Benchmarks: what the benchmark datasets are used to measure
- Laidline Source-Available Licence: the terms of Laidline itself