{
  "version": 2,
  "updated": "2026-08-12",
  "license": "CC0-1.0",
  "notes": "Every asset is generated from a deterministic source filter. A stream validated against one release is byte-identical in the next unless the changelog says otherwise.",
  "renditions": [
    { "label": "360p",  "width": 640,  "height": 360,  "video_kbps": 800,  "audio_kbps": 96 },
    { "label": "720p",  "width": 1280, "height": 720,  "video_kbps": 2500, "audio_kbps": 128 },
    { "label": "1080p", "width": 1920, "height": 1080, "video_kbps": 5000, "audio_kbps": 128 }
  ],
  "streams": [
    {
      "id": "timecode",
      "title": "Timecode and colour bars",
      "summary": "Frame counter over SMPTE-style bars. The number on screen is the frame index, so a dropped frame or an audio offset is visible without tooling.",
      "use_for": ["A/V sync", "dropped frames", "seek accuracy"],
      "fps": 30,
      "duration_s": 60,
      "video_codec": "H.264 High",
      "audio_codec": "AAC-LC 48 kHz stereo",
      "progressive": {
        "360p": "/media/timecode/timecode-360p.mp4",
        "720p": "/media/timecode/timecode-720p.mp4",
        "1080p": "/media/timecode/timecode-1080p.mp4"
      },
      "hls": "/media/timecode/hls/master.m3u8"
    },
    {
      "id": "gradient",
      "title": "Smooth gradients",
      "summary": "Slow four-colour gradients with almost no high-frequency detail. Banding introduced by an over-aggressive transcode shows up as visible steps.",
      "use_for": ["banding", "bit depth", "chroma subsampling"],
      "fps": 30,
      "duration_s": 60,
      "video_codec": "H.264 High",
      "audio_codec": "AAC-LC 48 kHz stereo",
      "progressive": {
        "360p": "/media/gradient/gradient-360p.mp4",
        "720p": "/media/gradient/gradient-720p.mp4",
        "1080p": "/media/gradient/gradient-1080p.mp4"
      },
      "hls": "/media/gradient/hls/master.m3u8"
    },
    {
      "id": "motion",
      "title": "High motion, 60 fps",
      "summary": "Continuous movement at 60 fps with a constrained bitrate. Encoders that cannot keep up produce blocking here long before they do on ordinary footage.",
      "use_for": ["encoder stress", "frame pacing", "ABR switching"],
      "fps": 60,
      "duration_s": 60,
      "video_codec": "H.264 High",
      "audio_codec": "AAC-LC 48 kHz stereo",
      "progressive": {
        "360p": "/media/motion/motion-360p.mp4",
        "720p": "/media/motion/motion-720p.mp4",
        "1080p": "/media/motion/motion-1080p.mp4"
      },
      "hls": "/media/motion/hls/master.m3u8"
    },
    {
      "id": "sustained",
      "title": "Sustained download",
      "summary": "Five minutes at 1080p in a single progressive file. Short clips finish inside the initial congestion window and tell you nothing about steady-state throughput; this one does not.",
      "use_for": ["throughput", "cache fill", "range requests"],
      "fps": 30,
      "duration_s": 300,
      "video_codec": "H.264 High",
      "audio_codec": "AAC-LC 48 kHz stereo",
      "progressive": {
        "1080p": "/media/sustained/sustained-1080p.mp4"
      },
      "hls": null
    }
  ]
}
