{
  "slug": "video-hdr-to-sdr",
  "name": "gizza-ai/video-hdr-to-sdr",
  "version": "0.1.0",
  "title": "Convert HDR Video to SDR Online — gizza.ai",
  "description": "Tone-map an HDR (PQ/HLG, BT.2020) video down to SDR BT.709 so it stops looking gray, dim or washed-out. Runs in your browser with ffmpeg — nothing is uploaded.",
  "tags": [
    "video",
    "hdr",
    "sdr",
    "tone-mapping",
    "bt2020",
    "bt709",
    "pq",
    "hlg",
    "convert"
  ],
  "category": "video",
  "urls": {
    "page": "https://gizza.ai/tools/video-hdr-to-sdr/",
    "markdown": "https://gizza.ai/tools/video-hdr-to-sdr/index.md",
    "descriptor": "https://gizza.ai/tools/video-hdr-to-sdr/tool.json",
    "deep_link_example": "https://gizza.ai/tools/video-hdr-to-sdr/?url=https://example.com/input&tonemap=hable&peak=100&desat=0&format=mp4&quality=75"
  },
  "cli": "gizza tool video-hdr-to-sdr 'url=https://example.com/input' 'tonemap=hable' 'peak=100' 'desat=0' 'format=mp4' 'quality=75'",
  "tool": {
    "description": "Tone-map an HDR video (PQ/HLG, BT.2020) down to standard-dynamic-range BT.709 so it no longer looks gray, dim, or washed-out on ordinary SDR screens. Provide either url (HTTP/HTTPS) or ref (id from a prior tool call). tonemap picks the curve (hable|mobius|reinhard|linear|clip, default hable); peak is target nits (default 100); desat is highlight desaturation 0-4 (default 0); format is mp4 or webm (default mp4); quality is 1-100 (default 75).",
    "parameters": {
      "additionalProperties": false,
      "oneOf": [
        {
          "required": [
            "url"
          ]
        },
        {
          "required": [
            "ref"
          ]
        }
      ],
      "properties": {
        "desat": {
          "default": 0.0,
          "description": "Highlight desaturation strength 0-4 (default 0 keeps highlight color).",
          "maximum": 4,
          "minimum": 0,
          "type": "number"
        },
        "format": {
          "default": "mp4",
          "description": "Output container (default mp4 = H.264/AAC; webm = VP9/Opus).",
          "enum": [
            "mp4",
            "webm"
          ],
          "type": "string"
        },
        "peak": {
          "default": 100,
          "description": "Target SDR nominal peak luminance in nits (default 100 = reference SDR white).",
          "maximum": 10000,
          "minimum": 100,
          "type": "integer"
        },
        "quality": {
          "default": 75,
          "description": "Quality 1-100 (default 75). Lower = smaller file, lower quality.",
          "maximum": 100,
          "minimum": 1,
          "type": "integer"
        },
        "ref": {
          "description": "Reference id from a prior tool call. Use either url or ref.",
          "type": "string"
        },
        "tonemap": {
          "default": "hable",
          "description": "Tone-mapping curve (default hable). hable = filmic default; mobius keeps midtone saturation; reinhard is flatter; linear/clip are simplest.",
          "enum": [
            "hable",
            "mobius",
            "reinhard",
            "linear",
            "clip"
          ],
          "type": "string"
        },
        "url": {
          "description": "Video URL (HTTP/HTTPS). Use either url or ref.",
          "type": "string"
        }
      },
      "type": "object"
    }
  }
}