{
  "schemaVersion": 1,
  "contentVersion": "ca42e61ede0a24f789d7287a0001244ad22f4abf",
  "id": "docs/codecs/video/dsv",
  "collection": "docs",
  "title": "DSV",
  "description": "DSV1 is an archived hobby wavelet video codec with a C reference implementation, superseded by DSV2.",
  "canonicalUrl": "https://encode.wiki/codecs/video/dsv/",
  "apiUrl": "https://encode.wiki/api/v1/documents/docs/codecs/video/dsv.json",
  "markdownUrl": "https://encode.wiki/api/v1/markdown/docs/codecs/video/dsv.md",
  "status": "current",
  "tags": [
    "migrated",
    "video"
  ],
  "license": "CC BY-SA 4.0",
  "dates": {
    "lastVerified": "2026-10-08T00:00:00.000Z"
  },
  "authors": [],
  "sources": [
    {
      "title": "Digital-Subband-Video-1 repository and README",
      "url": "https://github.com/LMP88959/Digital-Subband-Video-1",
      "accessedAt": "2026-10-08T00:00:00.000Z"
    }
  ],
  "provenance": {
    "originUrl": "https://github.com/av1-community-contributors/codec-wiki/blob/37c3317fd058b23c71a87679bed5619a98f77752/docs/video/DSV.mdx",
    "originCommit": "37c3317fd058b23c71a87679bed5619a98f77752",
    "migratedAt": "2026-08-21T00:00:00.000Z",
    "modified": true,
    "originPath": "docs/video/DSV.mdx"
  },
  "headings": [
    {
      "depth": 2,
      "text": "What it does",
      "anchor": "what-it-does"
    },
    {
      "depth": 2,
      "text": "Using the reference tool",
      "anchor": "using-the-reference-tool"
    }
  ],
  "sections": [
    {
      "id": "_preamble",
      "title": "Page introduction",
      "depth": 0,
      "canonicalUrl": "https://encode.wiki/codecs/video/dsv/",
      "apiUrl": "https://encode.wiki/api/v1/sections/docs/codecs/video/dsv/_preamble.json",
      "markdownUrl": "https://encode.wiki/api/v1/sections/docs/codecs/video/dsv/_preamble.md",
      "checksum": "610a07ed084eb24d8eaf5271c649b03f772f33c5ac9ad9a4846973125049e1bd",
      "bytes": 432
    },
    {
      "id": "what-it-does",
      "title": "What it does",
      "depth": 2,
      "anchor": "what-it-does",
      "canonicalUrl": "https://encode.wiki/codecs/video/dsv/#what-it-does",
      "apiUrl": "https://encode.wiki/api/v1/sections/docs/codecs/video/dsv/what-it-does.json",
      "markdownUrl": "https://encode.wiki/api/v1/sections/docs/codecs/video/dsv/what-it-does.md",
      "checksum": "d96fbd8b5e7618a25513bb7883918c30da93aa002eeeab61a5dc085e52271d83",
      "bytes": 524
    },
    {
      "id": "using-the-reference-tool",
      "title": "Using the reference tool",
      "depth": 2,
      "anchor": "using-the-reference-tool",
      "canonicalUrl": "https://encode.wiki/codecs/video/dsv/#using-the-reference-tool",
      "apiUrl": "https://encode.wiki/api/v1/sections/docs/codecs/video/dsv/using-the-reference-tool.json",
      "markdownUrl": "https://encode.wiki/api/v1/sections/docs/codecs/video/dsv/using-the-reference-tool.md",
      "checksum": "4089261130e550e8842f89f90828d4a9a8848ddab4805932bbedc9313555a7a5",
      "bytes": 797
    }
  ],
  "outboundReferences": [
    "/codecs/video/dsv2/"
  ],
  "checksum": "468eda2b476446b96675c53e49238de2df28335b83a0e2928d009bc586b13977",
  "contentFormat": "markdown",
  "markdown": "DSV (Digital Subband Video 1, or DSV1) is a hobby codec by EMMIR (Envel Graphics): a small, wavelet-based, software-only codec that the author compares to MPEG-1/MPEG-2 in efficiency. It exists to be read and tinkered with, not to play back in anything. The repository was archived on 4 October 2024 and its README points to [DSV2](/codecs/video/dsv2/), which the author says compresses far better. Use DSV2 for any new experiment.\n\n## What it does\n\n- Multiresolution subband (wavelet) transform instead of a DCT.\n- Intra and forward-predicted inter frames, half-pixel motion compensation, no B-frames, variable-length closed GOPs.\n- 8-bit 4:1:1, 4:2:0, 4:2:2 and 4:4:4; no interlacing; frame dimensions must be even.\n- Interleaved exp-Golomb entropy coding, adaptive quantisation, and hierarchical motion estimation.\n- Single-pass ABR or CRF rate control.\n- The reference implementation is C89 with integer-only maths, no dependencies and a single thread.\n\n## Using the reference tool\n\nThe author's reference code (also available as the single header `dsv1.h`) is the only implementation; there is no FFmpeg or player support. Build it with `cc -O3 -o dsv1 *.c` from a checkout and run:\n\n```sh\n./dsv1 e -inp_video.yuv -out_compressed.dsv -w352 -h288 -fps_num24 -fps_den1 -qp85 -gop15\n./dsv1 d -inp_compressed.dsv -out_decompressed.yuv -out420p\n```\n\nOptions are written as `-name` immediately followed by the value (`-w352`, `-qp85`), unlike DSV2's `-name=value`. Input is raw YUV, so give the dimensions and frame rate; it is read as 4:2:0 unless you set `-fmt`. `-kbps` switches to ABR. `-out420p` converts the decoded output to 4:2:0, which discards chroma from a 4:2:2 or 4:4:4 stream. The format is described in `DSV1_spec_r2.pdf` in the repository.\n"
}
