Color Depth in HitFilm Ultimate

My understanding is that the color processing depth in Hitfilm is 16 bit.  I'm not sure I quite understand this since 16 bit color space is quite poor.  Hitfilm seems to do quite well.  My guess would be that HF has 16 bit per color channel for processing.  Which is quite good since most footage is 10 bit or less on the color channels.  However it is not quite up to 32 bit floating point.  Just wondering what is actually going on in HF?  Can someone provide me with the specifics?


  • In the Project screen, the Advanced tab allows you to specify whether HitFilm uses 8-bit integer or 16-bit floating point color.  8-bit processes faster, and so it can keep things moving quickly while you are editing, but 16-bit is going to give smoother gradients and more accurate color, at a somewhat slower pace.
  • Axel, just want to confirm that this only effects rendering while editing and does not effect rendering while exporting, correct?
  • Triem23Triem23 Moderator
    Well... I could be wrong, but I think this DOES effects export renders. Hitfilm's render formats may be 8-bit color, but a 16-bit workspace downsampled to 8-bit on render will still look better than an 8-bit workspace rendered in 8-bit.
    Think of it this way--in a full 8-bit workflow, everything is computed in 8-bit, which means every glow, gradient, shadow, blend mode---everything--is being slotted into a value of 0-255 as soon as it's generated. In a 16-bit workflow, generated elements--gradients, glows, shadows, etc--get computed between 0-16535, then get's downshifted to 0-255 on export. But, in the 8-bit workflow you'll get more banding and more color drift because the work elements are immediately shifted around in the smaller workspace. By working internally in 16-bit you get fewer "rounding errors" on subtle color shifts.
    So, while Hitfilm's final output is 8-bit color, there's still a great deal of advantage in working 16-bit until render.
  • It's a little different than that since Hitfilm renders 16 bit float which is different than just 16 bit integer.  0-16535 is 16 bit integer.  16 bit float uses 5 bits for the exponent, 10 for the mantissa and one sign bit.  I am no expert but this supposedly helps with extreme color or levels manipulation however it has its drawbacks too.  There is a lot of stuff on the internet about the difference between float and integer color levels.
  • Triem23Triem23 Moderator
    You are correct, sir, I have mis-stated the specifics of my case...
    That said, the basic principle holds true--even starting with 8-bit footage, there are quality advantages to working in 16-bit. ;-)
  • Yes, 16 bit float has definite advantages over 8 bit integer.  
    To my knowledge 16 bit float has certain advantages over 16 bit integer but also some disadvantages as well. You could think of 16 bit float as having an equivalent integer value that is variable over the color range.  For most of the color range the equivalent integer color bit value is around 11 bit which is less than the 16 bit integer.  But it is better than nearly all available source material.  The beauty of float is that as you approach the low end or high end of the color value the equivalent integer color value becomes much greater than 16 bit (on order of 100-1000 bit equivalent).  The theory is that this is where most error occurs in post processing the images.
    The gold standard for professional image manipulation is 32 bit float.  It is for nearly all intents and purposes a bit of overkill.  Hitfilm has made a clever compromise by choosing 16 bit float which gives us a fairly high degree of accuracy on image manipulation without costing a lot of compute time by going to 32 bit float.  It might be fair to say that if you have material that will suffer due to the difference between 32 bit float and 16 bit float, then you probably have the resources to go to full out 32 bit float high end post production applications.
    My $0.02
  • Prores 422 HQ is YUV only. Looking at the export options in HFE 2017,in the export to PR422HQ, I see a grayed out option


    Is HFE converting 8-bit RGB to 10-bit YUV for export ? I have 16-bit checked. Just wondering if you convert,

    internal 16-bit to 8-bit RGB and there to 10-bit YUV?

    Or is internal 16-bit float converted directly to 10-bit YUV for export?


Sign in to comment