Are You Screwing Up Your Footage In Resolve?

First of all let me say that DaVinci Resolve is a great piece of software. Very capable, very powerful and great quality. BUT there is a hidden “Gotcha” that not many are aware of and even more are totally confused by (including me for a time).

This has taken me days of research, fiddling, googling and messing around to finally be sure of exactly what is going on inside Resolve. I am NOT a Resolve expert, so if anyone thinks I have this wrong do please let me know, but here goes……

These are the important things to understand about Resolve.

Internally Resolve Always Works With Data Levels (bit 0 to bit 1023 or CV0-CV1023 – CV stands for Code Value).

Resolve’s Scopes Always Measure The Internal Data Levels – These are NOT necessarily the Output Levels.

There Are 3 Data Ranges Used For Video – Data CV0 to CV1023, Legal Video 0-100IRE = CV64 to CV940 and Extended Range Video 0-109IRE CV64 to CV1023 (1019 over HDSDI).

Most Modern Video Cameras Record Using Extended Range Video, 0-109IRE or CV64 to CV1019.

Resolve Only Has Input Options For Data Levels or Legal Range Video. There is no option for Extended Range video.

If Transcoding Footage You May Require Extended Range Video Export. For example converting SLog video or footage from the majority of modern cameras which record up to 109IRE.

Resolve Only Has Output Options For Data Levels or Legal Range Video. There is no simple option to output, monitor or export using just the 64 to 1019 range as a 64 to 1019 range.

So, clearly anyone wanting to work with Extended Range Video has a problem. Not so much for grading perhaps, but a big issue if you want to transcode anything. Do remember that almost every modern video camera makes use of the full extended video range. It’s actually quite rare to find a modern camera that does not go above 100IRE.

So why not just use data levels for everything? Well that is an option. You can set your clips attributes (in the media pane) to Data Levels, set you monitor output to Data Levels and when you render choose Data Levels. In fact this is what YOU MUST DO if you want to convert files from one format to another without any scaling or level shifts. But be warned, never, ever, grade like this unless you add a Soft Clip LUT (more on that in a bit) as you will end up with illegal super blacks, blacks that are blacker than black and will not display correctly on most devices.

There are probably an awful lot of people out there using Resolve to convert XAVC or other formats to ProRes and in the process unwittingly making a mess of their footage, especially SLog2 and  hypergammas.

On input you can choose clip attributes for Data 0-1023 or Video 64-940 as well as Auto (in most cases if Resolve detects luma levels under 64 the footage is treated as Data, otherwise video levels). Anything set to video levels or detected as video levels gets scaled from the sources  CV64-940 range to Resolve’s internal CV0-1023 range.

As Resolves waveform/vector scopes etc always measure the internal scaled range there is no way to tell just by looking at the scopes what range your original material was in or whether it’s been scaled. If you do want to check the range of the source clip, try reducing the video level in the colour panel. If your clip is extended range then you should be able to se the previously hidden high range by pulling the levels down. A legal range clip on the other hand will have nothing above Resolves 1023 so the peak level will just drop.

On output you can choose Data 0-1023 or Legal Video 64-960 for your output or monitoring range (Resolve uses 960 which is the CbCr max value, Y is 940). For Resolve to handle the majority of modern cameras and many modern workflows where outputting 64-1023  may be required, there is no option!!!!!! So if you are working with video levels, anything you want to work with using extended range ends up either scaled on input or clipped/range restricted, blacks crushed, on output.

For example:

Import Hypergamma or SLog which is 64-1023, don’t touch or grade the footage, then export using video levels and the range is clipped and will no longer have the highlights recorded above 100IRE in the original. The original input files will be CV64-1023 but the video range output files will be CV64-940, the range is clipped off at 940 (100IRE).  If you set the clip attributes to “video 64-940” then on input CV940 is mapped to CV1023 in Resolve, so anything you shot between 100 and 109IRE (940-1019) goes out of range and is not seen on the output (It’s still there inside Resolve, but you can’t get to it unless you grade the footage). There just isn’t a correct option to pass through Full Range video 1:1, unless you use data in, data out, but then you run the risk of having illegal super blacks. If you leave the clip attributes as video and the export using Data Levels then your original CV64 black gets pulled down to CV0 so your blacks are crushed, however you do then retain the stuff above 100IRE.

If you’re using Resolve to convert XAVC SLog2 or SLog3 to something else, ProRes perhaps, this means that any Look Up Tables used in the downstream application will not behave as expected because your output clip will have the wrong levels. So for file conversions you MUST use data levels on the input clip attributes and data levels on output to pass the video through as per the original, even though you are working with footage that complies with perfectly correct, Extended Range video standards. But you must never edit or grade like this as you will get super blacks on your output….. Unless you generate a soft clip LUT.

 If you import a full range video clip that goes from CV64 to CV1019(1023) (0 to 109IRE) and do nothing to it then it will come out of Resolve as either data levels CV0 to CV1023 (-7IRE to 109IRE) or legal video CV64 to CV940 (0 – 100IRE), neither of which is ideal when transcoding footage. 

 So what can you do if you really need an Extended Range workflow? Well you can generate a Soft Clip LUT in Resolve to manage your output range. For this to work correctly you need to work entirely with data levels. Clip attributes must be set to Data levels, Monitor out to Data Levels and Exports should be at Data Levels. This is NOT necessary for direct 1:1 transcoding as the assumption is that you want a direct 1:1 copy of the original data, just in a different format.

You use Resolves Soft Clip LUT generator (on the Look Up Tables settings page) to create a 1D LUT with a Black Clip of 64 and a White Clip of 1019. This LUT is then applied as a 1D Output LUT. If you are using an existing output LUT (1D or 3D) then you can use the Soft Clip LUT generator to make a modified version of that existing LUT, adding the 64 and 1019 clip levels.

 So what is it doing?

As you are working at Data Levels your clips and footage will come in to Resolve 1:1. So a clip with a range of CV0-1023 will come in as CV0-1023, a CV64-940 clip will come in with CV64-940 and a CV64-1019 clip as CV64-1019. Most video clips from a modern camera will use CV64-1019.  A clip using CV64-1019 will be imported and handled as CV64-1019 within the full 0-1023 range, but the levels are not shifted or altered so if it’s CV220 in the original it will be CV220 inside Resolve. One immediate benefit is that Resolves scopes are now showing the actual original levels of the source clip, as shot. Phew – that’s a lot of CV’s in that paragraph, hope your following along OK.

You grade your footage as normal. The Soft Clip LUT will clip anything below CV64 (0 IRE, video black) but allow the full extended video range up to CV1019(1023) to be used. It won’t shift the level, just not allow anything to go below CV64. If grading for output do ensure that you really do want extended range (If you want to stay broadcast safe use video range).

The output to your HDSDI monitor will be unscaled data CV0-1019, but because of the LUT clipping at 64, there will be nothing below 64, no super blacks, this is how it should be, this is correct and what you want for an extended range workflow, perhaps for passing your footage on to another video editing application for finishing or where it will be mixed with other full range footage. The majority of grading workflows however will probably be conventional Legal Video Range.

When you render a file using data levels, the file will go from CV0-1019 but again because of the Soft Clip LUT there will be nothing below 64 (black) but you can use the Full Range above CV940 so super whites etc will be passed through correctly to the rendered file. This way you can make use of the complete extended video range.

 In Summary:

If you want to use Resolve to convert files from one codec to another, without changing your levels you must ensure the Clip Attributes are set to Data, your monitor out must be set to Data Levels and you must Render using Data Levels. If you don’t there is a very high likelihood that your levels will be incorrect or altered, almost certainly different to what you shot.

If you wish to grade and output anything above 100IRE (perhaps when mixing graded footage with full range camera footage) then again you must use data levels throughout the workflow but you should add a Soft Clip LUT with CV1019 as the upper clip and CV64 as the lower clip to prevent illegal black levels but retain full video range to 109IRE.

It would be so much simpler if Resolve had an extended range video out option.

13 thoughts on “Are You Screwing Up Your Footage In Resolve?”

  1. Many Modern Workflows Require Full Range Video Export. For example clips shown on a computer should use the full 0-109IRE range, as do YouTube/Vimeo and many digital broadcasters.

    As a Mac user, I’ve found that Adobe Premiere tends to block everything over 100IRE, and in FCPX, if I take standard SMPTE bars and push the brightness of the 75IRE block up to 100IRE, therefore pushing the lower 100IRE block up to 109IRE and beyond (it caps out at 109IRE), I cannot detect a difference between 100 and 109. Furthermore, a screen grab in photoshop, a photo of the screen then opened in photoshop, and any other way I can think of, doesn’t show a difference between brightness values 100 and 109. They’re both 255,255,255. How do I get to see the full range?

    1. Premier will pass full 0-109IRE range most of the time, however some effects will clip at 100IRE.
      If you output levels are 255 then you are seeing full range. If 100IRE is getting scaled to 255 then there is something odd going on as 100IRE should be bit 235.

  2. Interesting post. Would just point out that Resolve does retain 32bit float input values. So if you bring “Full Range Video” as legal level, you’ll still be able to pull down the gain and bring back the over 100 data.

    What’s more, there is no delivery format for which “full range video” is appropriate. Not even web videos. It’s not what’s expected and will result in inconsistent behavior.

    1. Yes you are correct resolve does retain out of range levels internally.

      I do not agree that there is no delivery format requiring full range video. On a computer white is bit 255 or 1019. If you export a video for computer display using 0-100IRE and embed that video on a page with a white background any white in your video will appear slightly grey in comparison. The majority of broadcasters allow you to use the SMPTE 0-100 + 104IRE range where white is 100IRE and 104IRE is used for overshoots. Many digital broadcasters now allow you to use the full 0-109IRE range. Almost every single video camera sold today shoots using full range, why? because that’s what you need for digital delivery and digital broadcasting.

  3. To address the other points.

    The majority of broadcasters allow you to use the SMPTE 0-100 + 104IRE range where white is 100IRE and 104IRE is used for overshoots.
    These are excursion tolerances… 104IRE is to give people mastering broadcast content a little wiggle room on QC. This comes from the analog days.


    Many digital broadcasters now allow you to use the full 0-109IRE range.

    What’s a “digital broadcaster”? If you mean streaming services and the like. They likely don’t think much about broadcast levels, but their encoding gear (as does all encoding gear) expects 235 white input.
    Almost every single video camera sold today shoots using full range, why? Yes and every single video camera sold today needs to be legalized for broadcast. As to the why… well why waste the bits? That’s valuable info that as a colorist I’m happy to be able to pull from. It provides a hair of buffer if someone misses exposure. But it’s not intended to be viewable information down the line. It’s meant to be scaled or clipped.

    1. Well your bit 235 whites are as white as the background 255 whites. Once upon a time this was a massive issue, I’m guessing the video players are now scaling the output correctly to match the display device. I’m going to have to go back and take a better look at this… Thanks.

      The BBC is a digital broadcaster, they now accept masters that use the full 0-109IRE range.

      The original point of the article was about passing through content “as shot” and this still stands. If you shoot with Log which uses the full 109IRE range and you want to output without shifting the levels, say transcoding to use in another app, you need to use data range.

      Off to do some more investigation.

  4. Actually most log formats use the full 0-1023 range. As in “full, full” not “full 0-109IRE” which, btw we call “extended range”.

    So the ranges are legal/video levels. Full or data levels. And “extended” levels which represent the 0-109 range you describe.

    Most log recording formats are recorded RGB, and generally full sample RGB images are scaled full/data levels.

    If you interpret that log image as extended level instead of full, when you apply a delog lut, you’ll actually move the middle gray point down. Effecting your whole image.

  5. If you shoot Log which uses full 109IRE range…

    Actually most log formats use the full 0-1023 range. As in “full, full” not “full 0-109IRE” which, btw we call “extended range”.

    So the ranges are legal/video levels. Full or data levels. And “extended” levels which represent the 0-109 range you describe.

    Most log recording formats are recorded RGB, and generally full sample RGB images are scaled full/data levels.

    If you interpret that log image as extended level instead of full, when you apply a delog lut, you’ll actually move the middle gray point down. Effecting your whole image.

  6. Actually most log formats use CV 90 or 95 for black.

    Sony’s Log formats can be either YCbCr or RGB, just depends on how the camera is set. Same with Alexa, can be YCbCr, but normally RGB. In all cases the code values are as follows:

    Sony SLog and SLog2 CV 90 – CV 1019. YCbCr or RGB
    Sony Slog3 CV 95 – CV 1023. YCbCr or RGB
    Other common log curves:
    Cineon is CV 95 – 1023
    Log C is CV 95 – 1023

    I suspect that they keep within the 64 -1019 range so that blacks don’t look crushed/clipped when viewed on a monitor that would be expecting black at 64. If they used 0 as black the images would look terrible on most monitors. Not entirely sure why they don’t use 64 as black, maybe to leave room for undershoots, I think Cineon can go down below black.

    The other problem area is the majority of modern cameras use the 64 – 1019 extended range. So as I started out, if you want to transcode your footage without altering the levels of your original recordings then you must use data levels. If you want to pass your footage on to a down stream application that can make use of extended range then you need to use data levels and in many many cases a soft clip lut as most video applications will use CV 64 as black. And I wish Resolve would include an extended range output option so you don’t need the soft clip LUT.

  7. @Juan Regarding the link to the reel on your page, I can make out a difference in the white of your reel to the white on the webpage – they ARE distinguishable!

    Are you saying that we shouldn’t, and that 100IRE and 109IRE are indistinguishable on your monitor?

    Cheers,
    Tom

  8. @juan… actually, now you’ve muddied the waters on me…! The PNG link you posted has distinguishable whites, where yes, it appears that on your actual website, whites appear the same.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.