4K60 Pro Mk.2 weird color and resolution issues

Jsmith345

Member
Hello,

Hopefully my english i good enough to descibe my problem.
Since weeks/months i tried to master my dual pc setup for streaming and recording at the same time. I fixed a lot of problems, but now i am stuck with some color and resolution issues.



#1

I am cloning my main monitor (ASUS ROG Swift PG27VQ) @1440p144 to an Elgato 460 Pro Mk.2 Capture Card built in a second streaming pc.

I have seen the guide about color settings for 4k60 pro and made all settings described in the guideline:

I decided to go with the full range method. So, full range is used in Nvidia Control Panel.

In 4K Capture Utility (4KCU) i used bypass. In OBS and Prism Live Studio i made the following settings:

Program Settings:
- Color Format NV12
- Color Space sRGB/ in Prism Rec.709 (we don't wanna talk about prism here)
- Color Range Full

4k60 Properties in OBS:
- Resolution either 1080p60 or 1440p60
- FPS highest possible
- Color Format NV12
- Color Space Rec.709
- Color Range Full

Other Settings in 4K Capture Utility:
- EDID Mode Input Internal
- EDID (Internal) 1080p oder 1440p

The weird thing is, that the colors of the captured footage are a little bit off from the original ones.
In 1440p colors are almost matching 100%. I know a little deviation is normal, but the picture looks like it has kind of a very, very little green-cast. It could be perfectionism by myself, but it is noticeable. I don't care too much about that, but color correction via the 4KCC picture settings didn't help.

Similiar things in 1080p60 resolution. It is also very weird, that colors with exactly the same settings are much darker than in 1440p59 mode. So dark shadows are displayed as almost deep black.



#2

Also with the same settings in 1440p mode i am struggling to get native 1440p60 when cloning my main monitor. Usually i got 1440p59 in 4KCU, in 1080p i can set 1080p60 as wished. But this should be fine, even if i'm a little worried about micro stuttering caused of original 144Hz footage to non dividable 60Hz.



#3

Some infos about my streaming setup. This is getting very technical now.

System specs:
- Intel Core i5 13600k @ 5.5 GHz
- AsRock Intel ARC A380
- Corsair Vengeance 32GB (2x16GB) DDR4-2666 Mhz

Case 1 - Streaming to YouTube - 1440p59 Capture:
I need 2 instances of OBS to stream at 1440p to YouTube in AV1 --> transcoded to VP9, at the same time i record my gameplay at 3440 x 1440p with 1440p + facecam next to the captured image.
Stream encoding is done by Intel ARC with Intel QuickSync AV1 at 20.000kbps and for recording Intel QuickSync HEVC.

My CPU Load is at 50% and GPU at 70%

Case 2 - Multistreaming to Twitch and YouTube - 1080p60 Capture:
In this case i use 1 instance of OBS and an additional instance of Prism Live Studio, due to it's excellent multistreaming capabilities. I use 1080p resolution and in OBS for recording 2580x1080p with 1080p + facecam next to the captured image.
Streeam encoding is done via CPU x264 Preset Medium/Slow at 7750kbps and for recording Intel QuickSync HEVC.

My CPU Load is between 70 to 90%, almost 100% partially. But stream and record looks like running with no noticable problems.
GPU should be around 40%.

I tested a lot of resolution settings and noticed, that running 144hz is pretty useless in OBS, because it can only process up to 120 fps with custom settings. Also you need a lot more performance with 120fps instead of 60fps, because double the framerate = increasing the cpu load. Running 2 instances is already adding some serious load, and i think 60fps capture already looks pretty fine. Streaming i just possible in 60fps max. anyways.

But im still wondering. If set up 144Hz mode in 4KCC, but defined 60fps as maximum framerate in OBS, why is the system still acting like it tries to display 144 frames in OBS? 4KCC is closed of course. You can see a massive increase of frametimes and dropped frames in encoding delay (should be gpu?).
But the GPU didnt go over 70%, even with 1440p144Hz mode. Theoretically, i should be able to run 1440p144Hz and could clone my monitor to 4KCC with the same resolution and framerate. But if i do so, the previews picture both showing stuttering and tearing, even with not over 80% load of CPU/GPU.

In Short, 1080p60 x 2, 1440p60 x 2 are both running fine. Setting both resolutions to 144Hz is causing screen tearing and stuttering, no not overload.


These are all my questions and issues i am confronted with. Hope you can give some useful input and explaining some things to me.
 

Tomasz Góral

Active Member
Maybe this help you about colors:
NV12 - 12 bits per point (8 bits for luminance, 4 bits for chrominance - this is color, only 4 bit, some color must be lost)
RGB - 24 bits per point.

If ypu capture 144FPS (because you source is 144) you got 144. If you need 60 fps, some frames must be droped, but how is droped?

Stuttering and tearing - you got any V sync on ? overload if you got 70% - is middle value from e.g. 2-5 sec, soo in first second you got 100% load, in second second you got 50% load, after 2 second you got 75% load and this value you see.
 

Suslik V

Active Member
#1 You can shed a light on colors issues if you'll use some color test tables/charts. Just add images to main screen and see the result by your own eyes (on main PC display, on second PC display, in your media player, on streaming platform etc). It is common practice. There is example of such (for the standard 8-bits per component color depth): https://obsproject.com/forum/resour...t-color-range-settings-guide-test-charts.442/

@Tomasz Góral
Side note: theoretically, the NV12 vs RGB bitness comparison is incorrect because it is different things. Better to avoid direct comparison.
 

Jsmith345

Member
Maybe this help you about colors:
NV12 - 12 bits per point (8 bits for luminance, 4 bits for chrominance - this is color, only 4 bit, some color must be lost)
RGB - 24 bits per point.

If ypu capture 144FPS (because you source is 144) you got 144. If you need 60 fps, some frames must be droped, but how is droped?

Stuttering and tearing - you got any V sync on ? overload if you got 70% - is middle value from e.g. 2-5 sec, soo in first second you got 100% load, in second second you got 50% load, after 2 second you got 75% load and this value you see.

I didnt notice any difference between srgb and 709. sRGB shhould be better for gameplays, because almost every game uses srgb. 709 ingame was a lot darker. It's more suitable for TV sources, isn't it?

V Sync in Nvidia Control Panel is on "Let 3D Application Decide", but G-Sync is on because of the main monitor. It already tested with G-Sync off, made no difference. In Intel ARC A380 control panel on the second pc, i used smooth sync as v-sync mode. I also tested some other modes, but also made no big difference.

I can agree that average load is about 75%.
 

Jsmith345

Member
#1 You can shed a light on colors issues if you'll use some color test tables/charts. Just add images to main screen and see the result by your own eyes (on main PC display, on second PC display, in your media player, on streaming platform etc). It is common practice. There is example of such (for the standard 8-bits per component color depth): https://obsproject.com/forum/resour...t-color-range-settings-guide-test-charts.442/

@Tomasz Góral
Side note: theoretically, the NV12 vs RGB bitness comparison is incorrect because it is different things. Better to avoid direct comparison.
Thanks for the tiop with the color charts, i was already looking for sometihing like that. But unfortunately i have no clue, how to use this. How to get through this?
 

Jsmith345

Member
I still dont know, how to use this color reference pic, but i made some screenshots to share the fullscreen results from OBS.
Actually the colors in 4KCC looked a little darker than in OBS, but color settings are all at standard values, i did no color correction.

You can see a clear difference between 1440p and in 1080p it seems to be the blue-ish and black colors are not matching in 1080p.

It sucks, that i have to apply color correction at one resolution and not to the other.
That caused changing resolution to get a little complicated.
 

Attachments

  • OBS 1440p59.png
    OBS 1440p59.png
    286.4 KB · Views: 69
  • OBS 1080p60.png
    OBS 1080p60.png
    328.8 KB · Views: 72

Jsmith345

Member
I collected some additional info about cpu/gpu load values in obs/prism with every resolution i could set up with the Elgato 4K60 Pro Mk.2, in which case the colors are matching and also skipped frames with frametimes, if they are appearing or not.

1920 x 1080p Capture
====================
#59Hz
Preset: x264, Medium

Color reference match: NO
Color ingame match: NO

[2 Previews open]
CPU Load Preview only: 23%
GPU Load Preview only: 58%

[Just streaming preview open]
CPU Load Streaming and Recording is Live: 78%
GPU Load Streaming and Recording is Live: 55%
GPU Video Decode: 15%

Tearing/Stuttering: NO
Frame Render Times: 6.3ms, Unknown (Prism)
Skipped Frames Render: 0.0%
Skipped Frames Encoder: 0.0%
====================
#60 Hz
Preset: x264, Medium

Color reference match: NO
Color ingame match: NO

[2 Previews open]
CPU Load Preview only: 25%
GPU Load Preview only: 58%

[Just streaming preview open]
CPU Load Streaming and Recording is Live: 82%
GPU Load Streaming and Recording is Live: 52%
GPU Video Decode: 15%

Tearing/Stuttering: NO
Frame Render Times: 7.5ms, Unknown (Prism)
Skipped Frames Render: 0.0%
Skipped Frames Encoder: 0.0%
====================
#144 Hz
Preset: x264, Medium

Color reference match: YES
Color ingame match: YES

[2 Previews open]
CPU Load Preview only: 26%
GPU Load Preview only: 60%

[Just streaming preview open]
CPU Load Streaming and Recording is Live: 85%/Suddenly 100% permanent i dont know why. This is so weird...
GPU Load Streaming and Recording is Live: 75%
GPU Video Decode: 15%

Tearing/Stuttering: NO
Frame Render Times: 7.5ms, Unknown (Prism)
Skipped Frames Render: 0.0%/1.2%
Skipped Frames Encoder: 0.0%/1.2%
====================

2560 x 1440p Capture
====================
#59Hz
Preset: Intel Quick Sync AV1, quality

Color reference match: YES
Color ingame match: YES

[2 Previews open]
CPU Load Preview only: 36%
GPU Load Preview only: 78%

[Just streaming preview open]
CPU Load Streaming and Recording is Live: 57%
GPU Load Streaming and Recording is Live: 69%
GPU Video Decode: 24%
GPU Video Decode 1: 42%

Tearing/Stuttering: NO
Frame Render Times: 1.8ms; 12.6ms
Skipped Frames Render: 0.1%
Skipped Frames Encoder: 0.1%
====================
#60Hz
NOT POSSIBLE!
====================
#144Hz
Preset: Intel Quick Sync AV1, quality

Color reference match: YES
Color ingame match: YES

[2 Previews open]
CPU Load Preview only: 46%
GPU Load Preview only: 78%

[Just streaming preview open]
CPU Load Streaming and Recording is Live: 81%
GPU Load Streaming and Recording is Live: 72%
GPU Video Decode: 35%
GPU Video Decode 1: 42%

Tearing/Stuttering: YES
Frame Render Times: 2.7ms; 16.6ms
Skipped Frames Render: 5,1%
Skipped Frames Encoder: 9,8%
====================

Conclusion: In 1440p colors are always matching with the reference pics/footage, but 60fps is not possible.
In 1080p colors are only matching in 144hz resolution, maybe in 120Hz too, but did'nt check that.
 

Jsmith345

Member
But deep Black isnt deep black then, it looks like you applied a milky white layer on the black colors.
I also realized it depends on the game. In Phasmophobia for example colors weren't matching. No matter if full or limited colors were applied. It was directly between those 2 ranges. In FFVII Remake it was perfect, but only if i changed to limited color range.
So there is no way this problem can be solved. I have to make all settings per application individually.
But what about those performance issues with 144Hz modes?
 

Tomasz Góral

Active Member
Limited color range the Y value is from 16 - 235 (16 - is black, 235 full luminance), full range is 0-255.
Every game can be diffrent, because is not 'only one' gama value. Every texture can be diffrent, every spot lights etc.
It is interesting that at different frequencies, the palette may be different, can you provide a sample (e.g. 15-30 sec)?
 

Suslik V

Active Member
still dont know, how to use this color reference pic
Align image to the top left corner of the screen (position: x = 0; y = 0).

If you can't find the program that can display the image full screen and from the (0;0) point then try OBS Fullscreen Projector (Preview) on your main PC (base and canvas of OBS set to your display resolution = 2560x1440, thus preview can fill whole screen without scaling the image up or down):
  1. Add test image 1280x720 PNG to OBS (unfortunately, there is no 2560x1440 image in the test charts). By default, the image will be placed at (0;0).
  2. Start OBS Fullscreen Projector (Preview) on the main display that will be captured later by the capture card - the whole screen will be filled with the OBS Preview (now it shows test image 1:1 at top left corner of the screen, the right and bottom is black, because our image 1280x720 is smaller than the display resolution that is 2560x1440).
  3. View final image captured via the capture card on the second PC. Make screenshots of it (to show to someone else later).
  4. If you see no difference in colors in p3 then view final image on the streaming service (for this use third PC...)

Use ColorRange charts same way to see if range displayed right on your screen.
 

Jsmith345

Member
Limited color range the Y value is from 16 - 235 (16 - is black, 235 full luminance), full range is 0-255.
Every game can be diffrent, because is not 'only one' gama value. Every texture can be diffrent, every spot lights etc.
It is interesting that at different frequencies, the palette may be different, can you provide a sample (e.g. 15-30 sec)?
If think i'll try limited range again for 1080p60 resolution, maybe i can get the picture to become a little brighter. There has to be some kind of average value, which is the same for 1080p60 and 1440p59, because that will be the only working resolutions for me that have no performance issues.

But it's comprehensible to have performance issues, if you have to prerender a WQHD Picture + 1080p Cam 2 Times in 144Hz, even with an 13600k 14 Core, 20 Threads. Would'nt be much better with 13900k i guess. For the Intel ARC A380, it looks like this card is getting bored, when encoding some heavy load. Theres no way to use the graphics card for the preview rendering, isn't it?

Maybe i'll find some time to provide a sample.
 

Jsmith345

Member
Align image to the top left corner of the screen (position: x = 0; y = 0).

If you can't find the program that can display the image full screen and from the (0;0) point then try OBS Fullscreen Projector (Preview) on your main PC (base and canvas of OBS set to your display resolution = 2560x1440, thus preview can fill whole screen without scaling the image up or down):
  1. Add test image 1280x720 PNG to OBS (unfortunately, there is no 2560x1440 image in the test charts). By default, the image will be placed at (0;0).
  2. Start OBS Fullscreen Projector (Preview) on the main display that will be captured later by the capture card - the whole screen will be filled with the OBS Preview (now it shows test image 1:1 at top left corner of the screen, the right and bottom is black, because our image 1280x720 is smaller than the display resolution that is 2560x1440).
  3. View final image captured via the capture card on the second PC. Make screenshots of it (to show to someone else later).
  4. If you see no difference in colors in p3 then view final image on the streaming service (for this use third PC...)

Use ColorRange charts same way to see if range displayed right on your screen.
The main problem seems to be brightness of deep black contrasts, as you can see in thread answer #7 above.
 

Suslik V

Active Member
Use ColorRange charts...
because the color shift present in the images cannot be caused only by the range interpretation (when it woks OK).

Edit: wrong file name... I messed up "full-limited" part of the name for the LUT, now it's OK
Here is example of the LUT for OBS (see below) that can emulate how Full range video can be wrongly treated as Limited range video. More contrast but no color shift(!); the "force_render_full_range_as_limited.png" LUT itself was made by me for educational purposes:

force_render_full_range_as_limited.png


You can use it to see what wrong range selection (limited/full) can do to your image (this all is about the 8-bit depth per color component videos).

In my opinion, there are more issues inside your setup than just contrast. Yes, I see that the colors doesn't start from the 0 as they should but it is unknown how you make the screenshots and where the color shift appeared first.
 
Last edited:

Jsmith345

Member
because the color shift present in the images cannot be caused only by the range interpretation (when it woks OK).

Edit: wrong file name... I messed up "full-limited" part of the name for the LUT, now it's OK
Here is example of the LUT for OBS (see below) that can emulate how Limited range video can be wrongly treated as Full range video. More contrast but no color shift(!); the "force_render_full_range_as_limited.png" LUT itself was made by me for educational purposes:

View attachment 93343

You can use it to see what wrong range selection (limited/full) can do to your image (this all is about the 8-bit depth per color component videos).

In my opinion, there are more issues inside your setup than just contrast. Yes, I see that the colors doesn't start from the 0 as they should but it is unknown how you make the screenshots and where the color shift appeared first.
Wow, this is really a deep dive into the science of colors. I am just thinking the Elgato 4K60 Pro Mk.2 itself has some serious bugs here.

Did u see my resolution tests in post #8? It really depends on which resolution i choose (in comination with ingame settings), whether color gets too dark or correct. Thats so crazy.

I checked stream and recording load with 1080p100Hz again and this could be the sweet spot for 1080p streaming, as the colors were correct, no tearing, stuttering at all and cpu loads under 90%.

I'll have to wait until they fix that, i already reached out to the german elgato support and shared my results with them.

Maybe this could help to provide a fix for this.
 

Jsmith345

Member
Update:
I finally found a solution/workaround for the color issues. I realized, in nvidia control the color profile needs to be at standard profile, not controlled by the nvidia. The main monitor already uses the nvidia rgb profile, and if you set it twice its just logical that colors werent matching anymore. It's like applying a color filter on a color filter.

I also had to set up completely different settings in obs. i adjusted the settings with the data received from the elgato 4k60, which nvidia sent as a result.

Input Video Color Range Limited
Video Format NV12
Color Range Rec.601

So the color stuff works like a charm now, but still problems with finding the right resolution settings in variable refresh rate mode. Should be a problem with the elgato drivers/firmware in connection with current nvidia drivers, which means its unfixable at the moment...
 
Top