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:

Property

Value

Description

DataContainer

string 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:

Property

Value

Description

WriteRevision

boolean

If true adds an entry to the metadata RevisionHistory list.

DateTime

string

The revision date and time in ISO8601 format. By default the current date and time is used.

Author

string

The name of the individual or entity that revised the metadata.

Software

string

The name of the software tool used to revise the metadata.

SoftwareVersion

string

The version of the software tool used to revise the metadata.

Comment

string

A 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.

Property

Value

Description

Profile

enum

0 SDR
1 Profile 5
2 Profile 8.1 (HDR10)
3 Profile 8.1 (HDR10 1000 nits)
4 Profile 8.4 (HLG)

MaxSceneFrames

integer

The 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.

RpuProfile

enum

0 Baseline, 1 Main, 2 High

MultiPassMode

enum

0 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.

Property

Value

Description

RpuCompression

enum

0 Basic, 1 IdrRefresh

Level1Filter

enum

0 None, 1 Default, 2 Window

MaxFALL

number

Sets the L6 metadata maximum frame-average light level in nits (cd/m^2).

MaxCLL

number

Sets 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"
          }
        ]
      }
    ]
  }
}

Did this page help you?