# Generated test fixtures

The binary fixtures in `generated/` contain synthetic test patterns, solid
colours, sine waves, short subtitle strings and deliberately malformed bytes.
They contain no downloaded or recorded media. Native FFmpeg is a
development/test-generation tool only; the browser application never invokes
it.

Regenerate the exact fixture set with:

```sh
npm run fixtures:generate
# or, to replace the known generated set:
scripts/generate-fixtures.sh --force
```

The generator records the native FFmpeg first-version line when it runs.
The checked-in bytes were generated on 2026-07-24 with FFmpeg 7.1.3 on
Freedesktop SDK 25.08. Output may differ with another FFmpeg build; review and
update this inventory and `generated/SHA256SUMS` when intentionally
regenerating. Regeneration requires native H.264/x264, VP8/libvpx,
Vorbis/libvorbis, MP3/LAME, AAC, FLAC and PNG encoders. The fixture data is
dedicated to the public domain under
CC0-1.0; this statement applies only to `tests/fixtures/generated/`, not to the
application, which is licensed separately under GPL-3.0-or-later.

## Inventory

The exact native argument vectors are in
[`scripts/generate-fixtures.sh`](../../scripts/generate-fixtures.sh). “Generated
by” below identifies the relevant source and encoding operation. Every fixture
is intentionally tiny and exists to exercise a bounded behavior, not to
establish broad codec compatibility.

All rows have licence **CC0-1.0 (fixture data only)**.

| Fixture                    | SHA-256                                                            | Expected duration and streams                                                   | Expected metadata                                                                            | Generated by / purpose                                                                    |
| -------------------------- | ------------------------------------------------------------------ | ------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| `pattern-av.mp4`           | `3bd192d1b6cc9f1adad0cdbadbe82c61a5ae1789ce99102fcfb2011f1e1e9927` | 2.000 s; H.264 160×90 at 12 fps; mono AAC 16 kHz                                | title `Generated AV fixture`                                                                 | `testsrc2` + 440 Hz `sine`, x264/AAC; primary import, probe, preview and conversion smoke |
| `compatible-a.mp4`         | `93f5c81e90e592217b7d98204fbc5631602055f782659a44390db64c6f125fd2` | 1.000 s; H.264 128×72 at 10 fps; mono AAC 16 kHz                                | no semantic tags                                                                             | red `color` + 330 Hz `sine`, x264/AAC; first stream-copy concat clip                      |
| `compatible-b.mp4`         | `34a49f3f0dbfa3c90562524c1762e360fddce55de8e1fa2ead3a405927c2eff2` | 1.000 s; H.264 128×72 at 10 fps; mono AAC 16 kHz                                | no semantic tags                                                                             | blue `color` + 550 Hz `sine`, same settings as A; second stream-copy concat clip          |
| `different-dimensions.mp4` | `018be12c1c13ca2b196b3e30996d712cc3174ddb5a2225e65c0acf25b94ca20d` | 1.000 s; H.264 96×96 at 10 fps; mono AAC 16 kHz                                 | no semantic tags                                                                             | `testsrc2` + 660 Hz `sine`; incompatible concat, crop and resize                          |
| `tone.wav`                 | `0fd1f54d6be2f1cc7fd778775dd29cf184770d3716cf3394bf03ed54ac264c3c` | 1.000 s; mono PCM signed 16-bit LE, 16 kHz                                      | title `Generated tone`                                                                       | 440 Hz `sine`, PCM; waveform and lossless audio output                                    |
| `tone.mp3`                 | `68e45aefbe931a1ec3a9566713c80da64e58e379efe8ef86e8a7b846391334ce` | 1.080 s; mono MP3, 16 kHz                                                       | title `Generated tone`                                                                       | 440 Hz `sine`, LAME 32 kbit/s; MP3 input/output                                           |
| `tone.flac`                | `3f27e37b4d4c17c7ac1c3131c21fbe561c0d4637610e615fc96ff12b2870a5f8` | 1.000 s; mono FLAC, 16 kHz                                                      | title `Generated tone`                                                                       | 440 Hz `sine`, FLAC level 5; FLAC input/output                                            |
| `pattern.webm`             | `0613c85e11dffd72f166a7cdba03b57e9b293acd9edb8b308d4ec0feaf19ff8e` | 1.016 s; VP8 128×72 at 10 fps; mono Vorbis 16 kHz                               | title `Generated WebM fixture`                                                               | `testsrc2` + 440 Hz `sine`, libvpx/Vorbis; WebM and alternate-codec path                  |
| `subtitle.srt`             | `f36e5e9dd09da79774e7d4288bc177a273e63bc678132a23ee0b756184dd0f91` | cue 0.100–0.700 s; UTF-8 text                                                   | cue text `Generated subtitle`                                                                | literal generated text; SRT import and shift                                              |
| `subtitle.vtt`             | `6e19fc5920479512739e126433c7d80fbd168fc8a34786a30d2e270f48da8bff` | cue 0.100–0.700 s; UTF-8 text                                                   | cue text `Generated subtitle`                                                                | literal generated text; WebVTT import and shift                                           |
| `subtitle.ass`             | `cb1c44b5808a5aaa173d756d0b819b282138f73ce50ca9c883ee377eb646ddd8` | dialogue 0.100–0.700 s; UTF-8 text                                              | 128×72 script, local generic `sans-serif` style                                              | literal generated text; ASS parsing and local-font burn-in path                           |
| `metadata.mp4`             | `372d81c7bcaae67c09042fda95860902eb728374301ae97848e536a27b065dcd` | 1.000 s; same H.264/AAC streams as `compatible-a.mp4`                           | title `Metadata fixture`; artist `add ideas test generator`; comment `Local generated media` | stream-copy remux of A with tags; metadata round trip/removal                             |
| `chapters.mp4`             | `4f1b2bd90d1a041c90d325805e42a76518b6569f93715dbd711773cdedfb1222` | 1.000 s; H.264, AAC and MP4 chapter-data stream; chapters 0–0.5 s and 0.5–1.0 s | title `Chapter fixture`; chapter titles `First`, `Second`                                    | stream-copy remux of B with generated FFMETADATA; chapter inspection/export               |
| `attached-cover.mp3`       | `62fe9916406bbd9b25213f1aede0791ad382b235e425a42ea463f58c403588c3` | 1.080 s; mono MP3 plus 32×32 PNG with `attached_pic=1`                          | title `Attached cover fixture`; cover title/comment                                          | 440 Hz `sine` + generated yellow `color` PNG; attachment/cover-art stream handling        |
| `truncated.mp4`            | `c7e91f4a3d1e67bc1bcba2e7511299de5bda2867ba886d1bec786d1f60cfe93a` | invalid: first 128 bytes of `compatible-a.mp4`; no usable streams               | none expected                                                                                | bounded `head -c 128`; safe malformed-input diagnostics and cleanup                       |

`generated/SHA256SUMS` is the canonical machine-checkable copy of these
digests. Verify it from its directory:

```sh
(cd tests/fixtures/generated && sha256sum -c SHA256SUMS)
```
