API ReferenceChangelog
Log In
API Reference

Upscale HD SDR to 4K HDR10 with Pixop Deep Restoration 2 Fine-tuning and Pixop InfinteHDR

This recipe shows how to convert HD SDR footage (1080p or 720p) into high-quality 4K HDR10 using Pixop’s Deep Restoration 2 (DVRES2) Fine-tuning and InfinteHDR filters. Under the hood, we leverage the built-in config ID 5a76dfdd-ab15-4137-b919-e7a0f256a5d6 (“HQ live action, enhanced, 4K, HDR10”), which handles codec selection, upscaling, inverse tone-mapping and HDR color-space mapping for you.

When to Use This Recipe

Use this processing recipe when:

  • Your source footage is HD SDR (e.g., 1080p or 720p, progressive).
  • You want to produce a UHD (4K) HDR10 deliverable (800 nits) with minimal manual configuration.
  • You need:
    • AI-powered detail restoration via Pixop Deep Restoration 2 Fine-tuning, which upscales footage without deblurring or denoising, preserving fine details and texture, while injecting realistic details into lossy compressed footage.
    • ML-powered inverse tone-mapping via Pixop InfinteHDR, which performs automatic SDR to HDR expansion, while compensating for over-exposure.
    • Built-in color-space conversion from SDR (Rec.709) → HDR10 (Rec.2020 / SMPTE2084).
    • A 10-bit HEVC-encoded file in a MOV container.

Recommended Configuration

Pixop provides a built-in configuration that includes all required filters and settings. Simply reference confId: 5a76dfdd-ab15-4137-b919-e7a0f256a5d6. You can view this built-in config directly in our API Reference:
Retrieve video processing configuration details (ReplaceconfId with 5a76dfdd-ab15-4137-b919-e7a0f256a5d6.)

How to Use This Recipe

  1. Ensure you have a valid API key (X-API-Key: YOUR_API_KEY). See our Quick Start Guide for details.

  2. Import your source video (if not already imported) from S3 or HTTPS. Example (HTTPS import):

    curl --request POST \
         --url https://api.pixop.com/api/v1/videos/in/https \
         --header 'X-API-Key: YOUR_API_KEY' \
         --header 'accept: application/json' \
         --header 'content-type: application/json' \
         --data '
    {
      "name": "My Video",
      "url": "https://example.com/myvideo.mp4"
    }
    '

  3. Start the processing job, using the SOURCE_VIDEO_ID and referencing the built-in confId: 5a76dfdd-ab15-4137-b919-e7a0f256a5d6:

    curl --request POST \
      --url 'https://api.pixop.com/api/v1/videos/SOURCE_VIDEO_ID/processing/start/5a76dfdd-ab15-4137-b919-e7a0f256a5d6?startPosMs=0&endPosMs=10000' \
      --header 'X-API-Key: YOUR_API_KEY' \
      --header 'accept: application/json'

    The startPosMs and endPosMs parameters limit processing to the first 10 seconds. We recommend testing on short clips to keep costs down; to process the entire video, simply remove these parameters.

  4. Monitor the job status by polling the Video Processing Status endpoint until the status updates to DONE:

    curl --request GET \
      --url https://api.pixop.com/api/v1/videos/TARGET_VIDEO_ID/processing/status \
      --header 'X-API-Key: YOUR_API_KEY' \
      --header 'accept: application/json'

    Alternatively, you can create a webhook to receive status updates.

  5. Export the processed 4K HDR10 file to S3 or download it via HTTPS. Example (HTTPS download):

    curl --request POST \
      --url https://api.pixop.com/api/v1/videos/TARGET_VIDEO_ID/out/https \
      --header 'X-API-Key: YOUR_API_KEY' \
      --header 'accept: application/json'

Full API usage details are available in our API Reference and Quick Start Guide.

Output Example

  • Container: MOV
  • Codec: HEVC (H.265), 10-bit (4:2:0)
  • Resolution: 3840×2160 (UHD 4K)
  • Color Space: BT.2020, SMPTE2084 (HDR10), limited range, mastering display (800 nits)
  • Filter: DVRES2 (Pixop Deep Restoration 2 Fine-tuning)
  • Inverse Tone-Mapper: INFINTEHDR (Pixop InfiniteHDR)

Below is a sample workflow diagram (for illustration only):

flowchart TB
    A(["<b>HD SDR Video</b><br/>(1080p or 720p, AVC 8-bit, Rec.709)"])
    A -->|"Import (S3 or HTTPS)"| B["<b>Pixop Processing Job</b><br/>(“HQ live action, enhanced, 4K, HDR10“ built-in config)"]
    B -->|"Export (S3 or HTTPS download)"| C(["<b>4K HDR10 Deliverable</b><br/>(3840×2160, HEVC 10-bit, BT.2020 / SMPTE2084)"])

Tips & Considerations

  • Processing Time: Pixop Deep Restoration 2 (DVRES2) Fine-tuning combined with Pixop InfiniteHDR and 10-bit HEVC encoding increases job duration, so allow extra time compared to simple upscaling.

  • Source Quality: Best results come from clean, well-produced HD SDR masters. Heavy noise, compression artifacts and over-exposure may limit HDR mapping quality.

  • Color-Space Metadata: The built-in config includes mastering display data, Maximum Content Light Level (Max CLL), and Maximum Frame Average Light Level (Max FALL) for 800 nits. If you need different HDR parameters, consider creating a custom configuration (see below).

  • Custom Configs: To tweak HDR metadata (e.g., Max FALL, Max CLL) or use a different tone-mapping algorithm, modify this JSON (copied from the built-in config), and then call:

    curl --request POST \
         --url https://api.pixop.com/api/v1/processing-configurations \
         --header 'X-API-Key: YOUR_API_KEY' \
         --header 'accept: application/json' \
         --header 'content-type: application/json' \
         --data '
    {
      "name": "Custom: HQ live action, enhanced, 4K, HDR10",
      "description": "Custom: Upscaling to 4K resolution for high-quality live action and 800 nits HDR10 upconversion.",
      "options": {
        "encodingConfiguration": {
          "codec": "HEVC",
          "pixelFormat": {
            "yuv": "4:2:0",
            "bitDepth": 10
          }
        },
        "container": "MOV",
        "filters": {
          "scaler": "DVRES2"
        },
        "filterSettings": {
          "dvres2Variant": "FINE_TUNING",
          "resolution": {
            "tag": "UHD_4K",
            "aspectRatioTag": "DISPLAY"
          }
        },
        "processingSettings": {
          "outputColorSpaceConversion": {
            "mappingMode": "STRICT_USER",
            "colorProfile": {
              "colorSpace": "BT2020NC",
              "colorPrimaries": "BT2020",
              "transferCharacteristics": "SMPTE2084",
              "colorRange": "LIMITED",
              "hdrFormat": "HDR10",
              "masteringDisplay": {
                "red": { "x": 0.68,  "y": 0.32 },
                "green": { "x": 0.265, "y": 0.69 },
                "blue": { "x": 0.15,  "y": 0.06 },
                "whitePoint": { "x": 0.3127, "y": 0.329 }
              },
              "maxCll": 800,
              "maxFall": 200
            },
            "metadataOnly": false,
            "inverseToneMapper": {
              "algorithm": "INFINITEHDR",
              "outputNits": 800,
              "saturationBoost": 1.25
            }
          },
          "outputScanning": "AUTO"
        }
      }
    }
    '

    Then supply your new confId instead of the built-in one.