Custom LUTs on capture cards
When I saw that OBS and Ecamm Live, both support Look Up Tables (LUTs) into the live video, I was quite exited, but never had the chance to try them out, until recently, and oh boy, it was quite disappointing, and it is not their fault, but the lack of information and documentation by all parties involved, but first, let’s talk about the expectations.
Most video enthusiast were hyped about the first Canon mirrorless camera that had C-Log and supported external recording in ProRes, but neither Atomos nor Canon explained correclty how to get the best quality, their guides an tutorials never addressed that the HDMI signal was in full range but lacked the metadata to tell NLEs like Adobe Premiere that the footage was in full range, producing a high contrast image that didn’t look too wellm and many YouTubers and reviewers made their videos with that kind of bad footage.
The full range issue was something that was later addressed by Atomos with the “Legalize” toggle, and even Gerald Undone didn’t give down to earth explanation on how to use the toggle. Then, there was the undocumented issue with the EOS R5 that showed in their settings that the selected color space was CinemaGamut, but they didn’t warn in the settings and in their documentation that the HDMI output will be set back Rec.2020 while using CinemaGamut, because the HDMI standard can’t handle and/or doesn’t support CinemaGamut, and again, many YouTubers and reviewers produced videos with the Rec.2020 yellow tint in their videos without caring at all.
So, after some empirical experimentation and research, many YouTubers shared how to setup both, the EOS R5 and Atomos Ninja V to get the best quality and dynamic range, which translates into 4K either UHD or DCI, C-Log 3 and Rec.2020, enabling the “Legalize” toggle and using the right LUTs in the Ninja V for white balance with the RGB Parade and exposure with false colors on the Ninja V, then, depending if the footage were destined to be edited in Adobe Premiere or DaVinci Resolve, disabling the “Legalize” toggle.
Once the footage was recorded, on the NLE, applying the technical LUT to get back the colorfull Rec.709 look, and having that, adjusting all the settings to create the custom look for the video.
So, when seeing that OBS and Ecamm Live supported LUTs, one could conclude that the workflow had to be similar, set the camera in a LOG profile, connect the camera to an HDMI video capture device, and then apply the technical LUT within OBS or Ecamm Live, but that doesn’t work as expected.
Color spaces, HDMI standards and capture devices
The EOS R outputs an HDMI signal using 10-bit video, with a chroma subsampling of 4:2:2 in YCbCr at a resolution up-to 3840×2160 (4K UHD) when using C-Log in Rec/BT.2020. The EOS R5 outputs 10-bit video, with a chroma subsampling of 4:2:2 in YCbCr at a resolution up-to 4096×2160 (4K DCI) when using C-Log 3 in Rec/BT.2020.
We use 10-bit with a chroma subsampling of 4:2:2 and with a LOG profile because in that way we have plenty of dynamic range and color information to grade the footage as we please, grading 8-Bit could result in banding for the lack of dynamic range, and a chroma subsampling of 4:2:0 lack the full color spectrum necessary for grading, these are minimal thresholds, hi-end professionals use 16-Bit RAW footage without any chroma subsampling at all to grade their footage without any noticeable loss in quality, 10-Bit 4:2:2 LOG video is the minimum expected for a custom LUT.
One should expect that the capture devices can receive that input and display it as it is in OBS and Ecamm Live, so a technical or custom LUT could be applied without any issue, but that doesn’t happen at all, the LUT looks awful, colors are completely wrong, Why? Well, it is an issue of documentation, or lack of it
Documentation, what documentation?
I did several tests using Elgato Cam Link 4K, Elgato Game Capture HD60 S+ and the Pengo 4K HDMI capture device, after not getting the right results applying the technical LUTs, I decided to look for the detailed specifications about each of this capture devices, but there was almost no documentation on the specifics, Elgato just shows supported resolutions, without detailed information on allowed color spaces and bit depth. I did many searches online, on support forums, online help, knowledge bases, etc. and nothing, it was thanks to some IA that I was able to find the specifics with the respective sources, and bingo, that was one of the issues.
Turns out that the Elgato Cam Link 4K and Elgato Game Capture HD60 S+ can’t handle Rec.2020 and 10-Bit in 4K, only in 1080p, and the Pengo 4K HDMI was able to handle the Rec.2020 10-Bit by downsampling the 4K to 1080p, but here is the deal, in OBS the only available color spaces were Rec.601 and Rec.709, there was NO Rec.2020 option at all, and the LUT filter clearly states that “Settings only apply to SDR video” which means Rec.709.
A workaround would be setting the HDMI output to 1080p on the cameras, but the Rec.2020 color space wasn’t shown in OBS, at least there was the option to choose “YUY2 – 422YpCbCr8_yuvs” instead of “NV12 – 420YpCbCr8BiPlanar” as Input format, but even setting both cameras, the EOS R and R5 to use the primitive C-Log (1) in Rec.709 didn’t produce the same results as with external ProRes and internal .MOV recordings, the Game Capture HD60 S+ has a small green shift, the Cam Link 4K has a small magenta shift, and the Pengo 4K HDMI has an even greener shift in the blacks. At least we can set the input format and signal levels in OBS, Ecamm Live doesn’t provide any place where the user can set the signal range and color space.
All this make me wonder, How are other people using the LUT feature in either OBS or Ecamm Live? Or the whole thing is just a gimmick?
In my research on the specs of other capture devices, I found that the Elgato Game Capture 4K X appears to be capable of capturing 10-Bit Rec.2020, but I’m not going to get yet another capture device without having some guarantee that OBS or Ecamm Live would be able to understand that color space and bit depth.
Some other findings
After several tests, I found out that the EOS R works best in full range on Elgato devices, while the EOS R5 requires limited range in Elgato, but requires full range in the Pengo 4K HDMI, which only likes rounded frame rates like 24, 30, 60, etc. instead of 23.976, 29.97 and 59.94. For some reason, 1080p video is transmitted in 60fps from both EOS cameras, changing the frame rate didn’t affect this.
In conclusion
In order to have a custom LUT using a LOG profile in OBS or Ecamm Live, you’ll have either to set your cameras to 1080p to have 10-Bit but in Rec.709 because OBS doesn’t support Rec.2020, or deal with the 8-Bit Rec.709 in 4K-UHD, using C-Log (1). Maybe upgrading to more powerful capture device, or getting one of the Canon cameras that support internal LUTs like the Canon EOS R1, Canon EOS R5 Mark II, Canon EOS R6 Mark III, Canon EOS R5 C and Canon EOS R50 V.