Fixed my problem but need explanation

Cmdr_SC

New Member
Hi, I had problem with OBS, it recorded way too dark color saturation either in sdr or hdr. And it was only noticeable when playing the recording and not in the preview window.
I tried a lot of thing from testing a lot of codec with a lot of encoder and all of the colorspace options.
The problem was still there until I put the range from FULL to LIMITED, and from then my colors looks fine !

But why tho ?! My PC in displaying 10bit FULL range not limited !
Even tho I fixed my problem I’m still pissed because I do not understand it !
Is my pc lying to me when it’s saying it’s displaying full ? Is the 10Bit part the problem ?

It’s not a priority but I like to understand what’s happening lul
Thx in advance for your time
 

Suslik V

Active Member
Then the issue is likely in encoder or in acceleration that is on in VLC.

YouTube player that playbacks uploaded footage?
 

Suslik V

Active Member
OBS log-file from the test recording may tell way more about the issue. Attach the one, and maybe someone of the users of HDR devices will help you to find out what is going wrong.
 

Suslik V

Active Member
Probably you run into issue known as:
in AMD repositories:
this was reported for SDR videos.

Also, there are other opened issues: https://github.com/obsproject/obs-studio/issues/10193 (and some others) that affects AMD HW AV1 encoder.
So, please, try other encoder (like software AOM AV1 and SVT-AV1, both can use 4:2:0 chroma subsampling), to see if it works better for you.
 

koala

Active Member
The problem was still there until I put the range from FULL to LIMITED, and from then my colors looks fine !

But why tho ?! My PC in displaying 10bit FULL range not limited !
You mention 2 completely different topics, although you don't know it. The classic 8 bit color depth, sdr ("standard dynamic range"), picks the most commonly used color and brightness range and assigns values from 0..255 for this range. This range excludes very dark colors you only perceive at night or in a dark room, and it excludes very bright colors you see if you're standing in full sunlight. If you record a video and the camera includes the sun, the sun appears just like a lightbulb in the video because the brightness range is rather limited.
Now about full/limited color range. In "full" color range, the numbers from 0..255 are used to represent color values. In "limited" color range, the numbers from 16..235 are used for the same range, so the colors look a little bit more banded, but only if you look very thoroughly.
Almost all videos you see on Youtube and every other video streaming service are in sdr (8 bit) color depth, and Youtube recodes every sdr video to limited color range. You will not really notice the difference between full and limited. The reason for limited color range is data compression. Limited can be better compressed, so more bandwidth is available for all pixels in general, so the overall quality is usually improved over full color range. At least with the rather small bandwidth of video streaming services. Might be surprising, but that's the case.

Finally, and that's about how using limited mode fixed your issue: limited is the default for all media. Proper detection of full color range is not supported by all media players, and it's also dependent on the encoder. So it happens full colors are often falsely interpreted as limited colors by media players, and this results in video being too dark and too bright at the same time, because the lowest 16 colors and the highest 16 colors are simply thrown away.

10 bit color depth for display means hdr ("high dynamic range") mode. That's rather new and only a few apps actually output hdr. A few games, not much more. It's a display mode you can show a much wider brightness range. The sun on a hdr video will really look bright on a hdr monitor, much brighter than a lightbulb. The way a hdr color value is stored as a number is fundamentally different to how it is in sdr mode.

However, chances are good you never saw hdr content on your PC except perhaps the short demo video you can watch if you look at the Windows hdr settings. Even if you activate hdr in Windows, all content from all your apps will not magically change to hdr. Only apps explicitly outputting hdr will really be hdr. Everything else will still output sdr, scaled to hdr, which looks awfully pale and somewhat faded and covered with a white haze. So you will continue to run Windows in sdr mode and record with 8 bit color depth as long as you don't actually want to run an app that really creates hdr images.
 
Last edited:

Cmdr_SC

New Member
You mention 2 completely different topics, although you don't know it. The classic 8 bit color depth, sdr ("standard dynamic range"), picks the most commonly used color and brightness range and assigns values from 0..255 for this range. This range excludes very dark colors you only perceive at night or in a dark room, and it excludes very bright colors you see if you're standing in full sunlight. If you record a video and the camera includes the sun, the sun appears just like a lightbulb in the video because the brightness range is rather limited.
Now about full/limited color range. In "full" color range, the numbers from 0..255 are used to represent color values. In "limited" color range, the numbers from 16..235 are used for the same range, so the colors look a little bit more banded, but only if you look very thoroughly.
Almost all videos you see on Youtube and every other video streaming service are in sdr (8 bit) color depth, and Youtube recodes every sdr video to limited color range. You will not really notice the difference between full and limited. The reason for limited color range is data compression. Limited can be better compressed, so more bandwidth is available for all pixels in general, so the overall quality is usually improved over full color range. At least with the rather small bandwidth of video streaming services. Might be surprising, but that's the case.

Finally, and that's about how using limited mode fixed your issue: limited is the default for all media. Proper detection of full color range is not supported by all media players, and it's also dependent on the encoder. So it happens full colors are often falsely interpreted as limited colors by media players, and this results in video being too dark and too bright at the same time, because the lowest 16 colors and the highest 16 colors are simply thrown away.

10 bit color depth for display means hdr ("high dynamic range") mode. That's rather new and only a few apps actually output hdr. A few games, not much more. It's a display mode you can show a much wider brightness range. The sun on a hdr video will really look bright on a hdr monitor, much brighter than a lightbulb. The way a hdr color value is stored as a number is fundamentally different to how it is in sdr mode.

However, chances are good you never saw hdr content on your PC except perhaps the short demo video you can watch if you look at the Windows hdr settings. Even if you activate hdr in Windows, all content from all your apps will not magically change to hdr. Only apps explicitly outputting hdr will really be hdr. Everything else will still output sdr, scaled to hdr, which looks awfully pale and somewhat faded and covered with a white haze. So you will continue to run Windows in sdr mode and record with 8 bit color depth as long as you don't actually want to run an app that really creates hdr images.
Thx for the reply,
I do have a HDR10+ oled monitor and play games like star citizen and helldivers2 that are hdr capable and also watch movies in hdr so being capable on recording in hdr is pretty important to me.

I understand the difference between 8 and 10bit, 256 and 1024 lever of rgb.
I also understand how limited and full works but only in 8bit (16-235 like you said) environments. But how does it works in 10 bit ?

I still don’t understand how setting the recording in 10bit limited give me the exact render I see on my screen in 10 bit full
 

Suslik V

Active Member
Limited range, in numbers, for luma plane pixels:
10-bit colors will be 64..940 (instead of 0..1023);
12-bit colors will be 256..3760 (instead of 0..4095);
16-bit colors will be 4096..60160 (instead of 0..65535) or 56065 gradations of luma component.

If display device is "Full range", then transformation "Limited range" -> "Full range" will be done on the fly by media player (or by other software, for example OBS uses own shaders to convert between ranges and color spaces on the fly, this makes possible to place OBS preview windows on different display devices). Visually, this transformation "stretches" 64..940 to 0..1023, and fills the gaps (algorithms may vary).

Visual representation of ranges can also be done with free tools (FFmpeg histogram):

If you watching HDR TV shows, you likely watching Limited range videos - in FFmpeg notation it is "yuv420p10le (tv)" format or similar.

Just in case, links to recommended encoding settings for YouTube videos: https://obsproject.com/forum/threads/washed-out-colors-on-recording.162064/post-601271
 
Last edited:
Top