Dolby Vision Filters

Advanced Dolby Vision Topics

Mastering Metadata

Transform supports Dolby Vision Mastering Metadata versions 2.0.5, 4.0.2 and 5.1.0 in the following formats:

  • as a sidecar XML file typically produced by the Dolby mastering tools.
  • Prototype High Dynamic Range (PHDR). This is a proprietary scheme that frame interleaves the metadata into a JPEG-2000 MXF image track file.
  • Isochronous Stream of XML Documents (ISXD). This format embeds the metadata in a separate MXF track file that is IMF compliant (SMPTE RDD47-2018).

Metadata Insertion

Transform can insert Dolby Vision Mastering Metadata into an IMF package in any of the supported formats.

Supported video formats include JPEG-2000 jp2k and Apple ProRes 4:4:4 HQ ap4h or XQ ap4x. Audio must be 16-bit twos or 24-bit in24 PCM. Subtitles must be ISMC profile TTML ttml.

For example the following composition will create an IMF package with PHDR mastering metadata from the following source files:

  • a sidecar xml containing the Dolby Vision mastering metadata.
  • a QuickTime mov containing the picture track, a stereo program and a 5.1 surround sound program.
  • a sidecar ismc file containing the english subtitles.
---
input:
  container:
  - name: xml
    video:
    - name: metadata
  - name: mov
    video:
    - name: picture
      merge:
        name: metadata
    audio:
    - name: stereo
      select:
        label:
        - Lt
        - Rt
    - name: surround
      select:
        label:
        - L
        - R
        - C
        - LFE
        - Ls
        - Rs
  - name: ismc
    subtitle:
    - name: english
output:
  container:
  - name: imf
  	type: 'imf '
    properties:
      DataContainer: phdr
    video:
    - name: picture
    audio:
    - name: stereo
    - name: surround
    subtitle:
    - name: english
{
  "input": {
    "container": [
      {
        "name": "xml",
        "video": [
          {
            "name": "metadata"
          }
        ]
      },
      {
        "name": "mov",
        "video": [
          {
            "name": "picture",
            "merge": {
              "name": "metadata"
            }
          }
        ],
        "audio": [
          {
            "name": "stereo",
            "select": {
              "label": [
                "Lt",
                "Rt"
              ]
            }
          },
          {
            "name": "surround",
            "select": {
              "label": [
                "L",
                "R",
                "C",
                "LFE",
                "Ls",
                "Rs"
              ]
            }
          }
        ]
      },
      {
        "name": "ismc",
        "subtitle": [
          {
            "name": "english"
          }
        ]
      }
    ]
  },
  "output": {
    "container": [
      {
        "name": "imf",
        "type": "imf ",
        "video": [
          {
            "name": "picture"
          }
        ],
        "audio": [
          {
            "name": "stereo"
          },
          {
            "name": "surround"
          }
        ],
        "subtitle": [
          {
            "name": "english"
          }
        ]
      }
    ]
  }
}

IMF Container Writer

The Interoperable Master Format imf writer supports the following Dolby Vision related properties:

PropertyValueDescription
DataContainerstring or array[string]phdr Dolby Vision metadata frame interleaved.
isxd Dolby Vision metadata in a separate MXF track file.

Metadata Extraction

Transform can extract Dolby Vision Mastering Metadata from an IMF package an MXF video track file or an MXF ISXD track file. This is typically used to create a sidecar XML for iTunes delivery.

For example the following composition will extract Dolby Vision Mastering Metadata from an IMF package:

---
input:
  container:
  - name: imf
    video:
    - name: picture
output:
  container:
  - name: xml
    type: 'dovi'
    video:
    - route:
        name: picture
    properties:
      WriteRevision: true
{
  "input": {
    "container": [
      {
        "name": "imf",
        "video": [
          {
            "name": "picture"
          }
        ]
      }
    ]
  },
  "output": {
    "container": [
      {
        "name": "xml",
        "type": "dovi",
        "video": [
          {
            "route": {
              "name": "picture"
            }
          }
        ],
        "properties": {
          "WriteRevision": true
        }
      }
    ]
  }
}

XML Metadata Writer

The Dolby Vision XML dovi writer creates a sidecar XML file from the frame interleaved metadata. The writer supports the following properties:

PropertyValueDescription
WriteRevisionbooleanIf true adds an entry to the metadata RevisionHistory list.
DateTimestringThe revision date and time in ISO8601 format. By default the current date and time is used.
AuthorstringThe name of the individual or entity that revised the metadata.
SoftwarestringThe name of the software tool used to revise the metadata.
SoftwareVersionstringThe version of the software tool used to revise the metadata.
CommentstringA description of the revision.

Encoding Profiles

Transcode supports the following Dolby Vision encoding profiles:

  • Profile 5, Single layer.

Additional Profiles Coming Soon:

  • Profile 8.1, Single layer HDR10 compatible.
  • Profile 8.4, Single layer HLG compatible.
  • SDR from Dolby Vision.

Mastering metadata may be supplied in any of the supported formats.

Distribution Encoding

For consumer distribution video must be encoded using an HEVC codec h265 . Audio is typically encoded as either Dolby Digital Plus ec3 or Dolby Atmos ec3j.

For example the following composition creates a Dolby Vision Profile 5 output for consumer distribution:

---
input:
  container:
  - name: imf
    video:
    - name: picture
    audio:
    - name: sound
output:
  container:
  - name: mp4
    type: 'mp4 '
    video:
    - name: picture
      filter:
      - type: 'dvpr'
        properties:
          Profile: 1
          MaxSceneFrames: 100
      encode:
        type: 'h265'
      attach:
      - type: 'rpu '
        filter:
          type: 'dvpo'
          properties:
            Level1Filter: 1
    audio:
    - name: sound
      encode:
        type: 'ec3 '
{
  "input": {
    "container": [
      {
        "name": "imf",
        "video": [
          {
            "name": "picture"
          }
        ],
        "audio": [
          {
            "name": "sound"
          }
        ]
      }
    ]
  },
  "output": {
    "container": [
      {
        "name": "mp4",
        "type": "mp4 ",
        "video": [
          {
            "name": "picture",
            "filter": [
              {
                "type": "dvpr",
                "properties": {
                  "MaxSceneFrames": 100
                }
              }
            ],
            "encode": {
              "type": "h265"
            },
            "attach": [
              {
                "type": "rpu ",
                "filter": {
                  "type": "dvpo",
                  "properties": {
                    "Level1Filter": 1
                  }
                }
              }
            ]
          }
        ],
        "audio": [
          {
            "name": "sound",
            "encode": {
              "type": "ec3 "
            }
          }
        ]
      }
    ]
  }
}

Pre-Processor

The Dolby Vision pre-processor dvpr filter must be applied to the output video stream prior to encoding. Depending on the encoding profile the pre-processor performs the following:

  • noise reduction and color space conversion (profile 5).
  • dynamic range reduction (SDR, HDR10, HLG compatibility).
  • generation of the Dolby Vision Reference Picture Unit rpu metadata for each frame.

Note that for Dolby Vision Profile 5 the pre-processor converts the video to an unspecified color space. This produces a noticble color shift when viewed using a non-Dolby Vision player.

PropertyValueDescription
Profileenum0 SDR
1 Profile 5
2 Profile 8.1 (HDR10)
3 Profile 8.1 (HDR10 1000 nits)
4 Profile 8.4 (HLG)
MaxSceneFramesintegerThe maximum number of frames the pre-processor will buffer while searching for a scene boundary. This value should be greater than or equal to the encoded GOP length.
RpuProfileenum0 Baseline, 1 Main, 2 High
MultiPassModeenum0 Scene, 1 SegmentFirstPass, 2 SegmentSecondPass

Post-Processor

The Dolby Vision post-processor dvpo filter must be applied to the rpu metadata prior to being attached to the encoded stream.

PropertyValueDescription
RpuCompressionenum0 Basic, 1 IdrRefresh
Level1Filterenum0 None, 1 Default, 2 Window
MaxFALLnumberSets the L6 metadata maximum frame-average light level in nits (cd/m^2).
MaxCLLnumberSets the L6 metadata maximum content light level in nits (cd/m^2).

Contribution Encoding

The pre-processor can all be used to create an SDR, HDR10 or HLG contribution mezzanine. This process uses the Dolby Vision mastering metadata to dynamically convert the master to the desired color space and dynamic range.

For example the following composition converts a Dolby Vision master (with sidecar XML metadata) to an Apple ProRes HDR10 (1000 nit) mezzanine:

---
input:
  container:
  - name: xml
    video:
    - name: metadata
  - name: mxf
    video:
    - name: picture
      merge:
        name: metadata
    audio:
    - name: sound
output:
  container:
  - name: mov
    type: 'mov '
    video:
    - name: picture
      filter:
      - type: dvpr
        properties:
          Profile: 3
      encode:
        type: apcx
    audio:
    - name: sound
      format: in24
{
  "input": {
    "container": [
      {
        "name": "xml",
        "video": [
          {
            "name": "metadata"
          }
        ]
      },
      {
        "name": "mxf",
        "video": [
          {
            "name": "picture",
            "merge": {
              "name": "metadata"
            }
          }
        ],
        "audio": [
          {
            "name": "sound"
          }
        ]
      }
    ]
  },
  "output": {
    "container": [
      {
        "name": "mov",
        "type": "mov ",
        "video": [
          {
            "name": "picture",
            "filter": [
              {
                "type": "dvpr",
                "properties": {
                  "Profile": 3
                }
              }
            ],
            "encode": {
              "type": "apcx"
            }
          }
        ],
        "audio": [
          {
            "name": "sound",
            "format": "in24"
          }
        ]
      }
    ]
  }
}