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.