Highlighted

Color Depth in After Effects Export Options

Contributor ,
Jun 30, 2019

Copy link to clipboard

Copied

I am trying to understand how color depth works.  So there are two things to consider:

  1. The bit depth of my project
  2. The bit depth of the codec I export with

After Effects lets me select between 8, 16, and 32 bits per channel in the project settings:

FlpbqVf.png

However, when I go to export, I get this nonsense:

zRKlyT3.png

I don't understand what corresponds to what.  How many bits per channel is each of these options?  Essentially, I want this table filled in:

DepthBits Per Channel (BPC)
256 Colors
Millions of Colors
Millions of Colors+
Trillions of Colors
Trillions of Colors+
Floating Point
Floating Point+

I'm assuming that Millions of Colors is 8 bits per channel, but I'm not confident.  I feel like it might be 10.  Here's an example of what I mean:

When I export using these settings:

diJpsqF.png

And then I import that exported MXF file into After Effects, I get this:

0ejFdUy.png

So if I exported it with "Millions of Colors", why does it get imported as having "Trillions of Colors"?  I just don't understand this.

Views

2.6K

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more

Color Depth in After Effects Export Options

Contributor ,
Jun 30, 2019

Copy link to clipboard

Copied

I am trying to understand how color depth works.  So there are two things to consider:

  1. The bit depth of my project
  2. The bit depth of the codec I export with

After Effects lets me select between 8, 16, and 32 bits per channel in the project settings:

FlpbqVf.png

However, when I go to export, I get this nonsense:

zRKlyT3.png

I don't understand what corresponds to what.  How many bits per channel is each of these options?  Essentially, I want this table filled in:

DepthBits Per Channel (BPC)
256 Colors
Millions of Colors
Millions of Colors+
Trillions of Colors
Trillions of Colors+
Floating Point
Floating Point+

I'm assuming that Millions of Colors is 8 bits per channel, but I'm not confident.  I feel like it might be 10.  Here's an example of what I mean:

When I export using these settings:

diJpsqF.png

And then I import that exported MXF file into After Effects, I get this:

0ejFdUy.png

So if I exported it with "Millions of Colors", why does it get imported as having "Trillions of Colors"?  I just don't understand this.

Views

2.6K

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Jun 30, 2019 0
Most Valuable Participant ,
Jun 30, 2019

Copy link to clipboard

Copied

The color depth for the project decides the accuracy of calculations when all the layers and effects are combined together. Even if your source footage is all in 8 bits per channel, adding something like the Glow effect can generate pixels which are in between the 256 allowed color values, so you gain smoothness by changing the project to 16pbc or 32bpc, at the expense of slower processing and much more RAM.

The "Depth" menu under Video Output uses the old fashioned way of describing bit depth. It multiplies the number of possible values for R, G and B, and shows "+" if it also includes an alpha channel.

For 8bpc data (0-255) we get 256*256*256 = 16,777,216 = "millions" of colors.

16bpc = "trillions" (32768 values per channel)

32bpc = "floating point" (in 32bpc we use decimals to represent each channel)

"256 colors" is a special case where only one 8-bit channel is exported

We stopped using this descriptor years ago because it falls apart when you have extra channels (e.g. in EXR). After Effects never bothered to change the menu.

However this is only the bit depth of the data that After Effects sends to the encoder library. The bit depth of the exported file also depends on what the particular codec can support. If you send 16bpc "trillions" to a codec that only stores 10-bit numbers, then your file will only be 10pbc. If you send 8pbc "millions" to a codec that always stores data in 16-bit, then the file will contain 16-bit numbers but they will be limited to only 256 possible values. Also if your project is in 8pbc, changing the Video Output menu to Floating Point doesn't magically increase the quality.

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Jun 30, 2019 1
Contributor ,
Jul 01, 2019

Copy link to clipboard

Copied

This is helpful, but to make sure I'm understanding, let's take this scenario.  Suppose I am working in a project using a bit depth of 16 bpc. 

AfterFX_2019-07-01_19-08-01.png

Then I want to export using the MXF OP1a AVC-Intra Class 100 1080 59.94 fps codec.  I know that the final video file is 10 bpc.

dllhost_2019-07-01_19-08-42.png

However, the bit depth was chosen to be "millions of colors" because that's the only option that After Effects give me in the "Output Module Settings."

AfterFX_2019-07-01_19-06-57.png

Because "Millions of Colors" refers to 8 bits per channel, even though my project is in 16 bpc, and even though my codec of choice supports 10 bit per channel color, I assume that my video is actually only truly 8 bpc because I have "Millions of Colors" selected.  Am I correct, or is my video truly 10 bpc?

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Jul 01, 2019 0
Most Valuable Participant ,
Jul 02, 2019

Copy link to clipboard

Copied

You must be using a legacy version of After Effects - MXF rendering is now done in Media Encoder, where the bit depth is handled behind the scenes. All you get is the "render at maximum depth" box, which you should tick if the project depth is less than the output file can support. Unticked the headless link to AE uses whatever the project depth was, ticked it temporarily toggles to 32bpc.

Normally when you select an output codec in AE's render queue settings window, the "Depth" menu is automatically restricted to the correct value(s). Obviously I can't test with MXF anymore, but for AVI and image sequences it works properly - e.g. selecting an 8-bit AVI codec only allows "Millions", selecting EXR only allows "Floating Point", etc.

Nothing in any of the menus or codec information tools will say if the data inside a 10-bit codec has been limited to only 256 possible values, you have to inspect the frames. So if you want to verify the differences in your setup, create a solid layer with a gentle gradient ramp (mid-gray to slightly-lighter-mid-gray), and export it through to MXF in various combinations of bit depth. Bring them back into the project and switch the project depth to 32bpc, so the gradient ramp is calculated in floating point, whack an extreme contrast boosting adjustment layer on top and compare the posterization, or lack thereof.

You will certainly be able to see a stark difference between the original gradient ramp and the re-imported files, but probably not much between the 8 and 10 bit flavors. There will be more variation in color than in brightness, thanks to the RGB<>YUV transforms.

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Jul 02, 2019 0
Contributor ,
Jul 02, 2019

Copy link to clipboard

Copied

Thank you very much for that suggestion.  I have confirmed that the output is indeed using all 10 bits per channel when rendered out with the project settings in 16 bpc, despite the fact that I chose "Millions of Colors."  I'll document my results here for future reference:

For all of the tests, the same gradient was exported using the same codec and the same "Millions of Colors" option, with the only different being the project's bit depth.

Original AE Project was in 8 bpc:

8 bit.png

Original AE project was in 16 bpc:

16 bit.png

Original AE project was in 32 bpc:

32 bit.png

So, despite the fact that "Millions of Colors" was selected as the output depth in all scenarios, and all of those MXF files are listed as storing the video in 10 bpc, we can see that if the project bpc was 16 or higher, then the MXF codec does indeed use those extra two bits.

So I guess "Millions of Colors" could mean 8 or 10 bpc.

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Jul 02, 2019 1
Most Valuable Participant ,
Jul 03, 2019

Copy link to clipboard

Copied

I assume you are aware that it is illegal to use CC 2014. All licenses were revoked in May. Users running versions before CC2018 can be sued for trademark infringement, so not the best plan to advertise it with screenshots.

Upgrade to CC2019, export your MXFs through Media Encoder, and none of this "millions vs trillions" stuff matters.

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Jul 03, 2019 0
Contributor ,
Aug 28, 2020

Copy link to clipboard

Copied

That's the first time I heard this. Would you care to explain the reason behind this? And what's with older projects, that would need to be digged out again?

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Aug 28, 2020 0