DaVinci Resolve colour management for NDI output
The VDO NDI Output plugin does not grade or colour-convert your footage. It takes whatever pixels the timeline hands it, tags them with NDI® metadata, and sends them on the wire. That means the most important thing you can do for correct colour over NDI is to get Resolve's colour management set up right — the plugin's Input Primaries and Transfer Function settings should describe what Resolve is already producing, not change it.
This page explains how the four colour management modes in DaVinci Resolve feed the plugin, and which settings you should pick for common SDR and HDR deliverables.
NDI® is a registered trademark of Vizrt NDI AB. Official NDI downloads and documentation live at ndi.video.
The one-line rule
Whatever colour space and transfer function your timeline output is encoded in is what the plugin receives. Set the plugin's Input Primaries, Transfer Function, and Output Range to match the timeline output. Everything else (Content Type, Send NDI Metadata) is metadata that tells the receiver how to interpret the signal — it does not change a single pixel.
Where to find the timeline output colour space depends on your colour management mode. Open Project Settings → Color Management and look at the field named in the sections below.
Mode 1 — DaVinci YRGB (unmanaged)
The classic Resolve mode. There is no colour management — what you grade is what the timeline emits. The timeline's colour space is defined by:
- Timeline Color Space (in Project Settings → Color Management)
- Timeline Gamma (same panel)
Common choices:
| Timeline Color Space | Timeline Gamma | Plugin Input Primaries | Plugin Transfer Function |
|---|---|---|---|
| Rec.709 | Rec.709 Gamma 2.4 | Rec.709 | None |
| Rec.2020 | Rec.2020 ST2084 (PQ) | Rec.2020 | None |
| Rec.2020 | Rec.2020 HLG | Rec.2020 | None |
| P3-D65 | Gamma 2.6 | P3 | None |
Transfer Function should stay on None. Resolve has already applied the transfer curve by the time the pixels reach the plugin. Setting it to anything else would apply the curve a second time.
Mode 2 — DaVinci YRGB Color Managed (simple)
Set Color Science to DaVinci YRGB Color Managed. You then pick three spaces:
- Input Color Space — what Resolve assumes source clips are in (per-clip overridable)
- Timeline Color Space — the internal grading space
- Output Color Space — what the timeline emits to the render queue, the viewer, and any OFX plugin sitting at the end of the chain
The plugin reads the Output Color Space, not the Timeline Color Space. Set Plugin Input Primaries and Transfer Function from the Output row:
| Output Color Space | Plugin Input Primaries | Plugin Transfer | Plugin Content Type |
|---|---|---|---|
| Rec.709 Gamma 2.4 | Rec.709 | None | Same as Transfer / SDR |
| Rec.2020 ST2084 1000 nits | Rec.2020 | None | HDR PQ |
| Rec.2020 ST2084 4000 nits | Rec.2020 | None | HDR PQ |
| Rec.2020 HLG | Rec.2020 | None | HDR HLG |
| P3-D65 ST2084 | P3 (or Rec.2020 if the receiver expects Rec.2020) | None | HDR PQ |
If you set Plugin Input Primaries to your Timeline Color Space (e.g. DaVinci Wide Gamut) instead of your Output Color Space, the stream will look catastrophically over-saturated — because Resolve has already transformed into the output space by the time it hits the plugin.
Mode 3 — DaVinci Wide Gamut (DWG) with Resolve Color Management (RCM v2)
With Color Science set to DaVinci YRGB Color Managed and Color Science Version Version 2, the internal working space is DaVinci Wide Gamut Intermediate — a much wider space than Rec.709 or Rec.2020. You should not tell the plugin this is the input; what the plugin sees is still the Output Color Space.
The plugin settings are identical to Mode 2 above. Follow the same table. The only difference is what Resolve is doing internally, and that does not affect the plugin.
Mode 4 — ACES (ACEScct / ACEScc)
Set Color Science to ACEScct or ACEScc. Pick an ACES Output Device Transform (ODT). The ODT determines what the timeline emits:
| ACES ODT | Plugin Input Primaries | Plugin Transfer | Plugin Content Type |
|---|---|---|---|
| Rec.709 | Rec.709 | None | Same as Transfer / SDR |
| Rec.2020 ST2084 (1000 / 2000 / 4000 nits) | Rec.2020 | None | HDR PQ |
| Rec.2020 HLG | Rec.2020 | None | HDR HLG |
| P3-D65 ST2084 | P3 or Rec.2020 | None | HDR PQ |
| sRGB | Rec.709 | None | SDR |
As with the other managed modes: the plugin reads the output of the ODT, not the ACES working space.
Recommended full configurations
SDR delivery
- Color Science: DaVinci YRGB (unmanaged) or YRGB Color Managed
- Timeline / Output: Rec.709, Gamma 2.4
- Plugin: Input Primaries Rec.709, Output Primaries Rec.709, Transfer None, Output Range Video, Content Type Same as Transfer, Force 8-bit On
HDR10 delivery (PQ)
- Color Science: DaVinci YRGB Color Managed (Version 2) or ACES
- Output Color Space / ODT: Rec.2020 ST2084 (1000 nits or your master's target)
- Plugin: Input Primaries Rec.2020, Output Primaries Rec.2020, Transfer None, Output Range Full, Content Type HDR PQ, Send NDI Metadata On, Force 8-bit Off (use 16-bit P216)
HLG delivery
- Same as HDR10 but Output Color Space / ODT set to Rec.2020 HLG
- Plugin: Content Type HDR HLG, everything else as above
P3-D65 theatrical reference
- Output Color Space / ODT: P3-D65 ST2084 (for HDR) or P3-D65 Gamma 2.6 (for SDR)
- Plugin: Input Primaries P3. Output Primaries P3 if your receiver understands P3; otherwise Rec.2020 so the plugin's built-in 3×3 matrix conversion brings it into a wider but receiver-compatible container.
Verifying you got it right
- Send a colour bar or test pattern through the plugin.
- Open your NDI receiver on the same network.
- The bars should look identical to Resolve's own viewer (use View → Clean Feed or a Video Scopes overlay to compare).
- If colours are crushed, washed out, or over-saturated, the most likely cause is a mismatch between the plugin's Input Primaries and Resolve's actual output, or a double-encoded transfer function from setting Transfer to something other than None.
Common mistakes
Setting Plugin Input Primaries to your Timeline Color Space in a managed project Resolve has already transformed into the Output Color Space before the plugin runs. Always read the Output row of Project Settings → Color Management.
Leaving Timeline Gamma on Rec.709 while grading HDR on an HDR monitor Your monitor may show the right image via a separate viewer LUT, but the timeline and therefore the plugin are emitting Rec.709 Gamma 2.4. The NDI stream will look SDR. Change the Output Color Space to the HDR one your deliverable demands.
Enabling Transfer Function in the plugin The plugin's Transfer Function option applies an OETF curve to linear-light pixels. Resolve does not hand linear-light pixels to OFX plugins — it hands you the fully-encoded timeline signal. Leaving this on None is almost always correct.
Forgetting Send NDI Metadata for HDR
Without the ndi_color_info block, receivers have no way to tell SDR from HDR PQ from HLG. They will guess, and they will usually guess wrong. Always turn Send NDI Metadata On for HDR work and pick the matching Content Type.
Using 8-bit for HDR PQ needs the full code range to survive banding on dark skies and skin tones. Leave Force 8-bit Off for any HDR workflow so the plugin uses 16-bit P216.
Further reading
- Using NDI on macOS with the VDO NDI Output Plugin — installing the NDI runtime and the plugin.
- ndi.video — official NDI Tools, SDK, and specifications from Vizrt NDI AB.
- DaVinci Resolve Colour Management — see your Resolve manual, Color Management chapter, for the authoritative behaviour of each mode and ODT.
Trademark notice
NDI® is a registered trademark of Vizrt NDI AB. DaVinci Resolve® is a registered trademark of Blackmagic Design Pty. Ltd. VDO is not affiliated with, endorsed by, or sponsored by Vizrt, NewTek, Blackmagic Design, or any of their affiliates.