Need to change Color Space of Display Capture only

Winchester7314

New Member
Hi, I'd like to start by thanking anyone who can help me with my current, specific, predicament.
And I will start this by saying, yes, I know there are side step solutions to my problem, but they don't help me because I'm very particular about using "Display Capture" instead of "Game Capture" and yes, I do know its more of a performance hog, and that most everyone uses game capture. I however do not. I like being able to record my desktop and jump into games seemlesly, without having multiple sources for this. Having display capture solves this.
My problem is that I have a Xeneon Flex 45, which is an HDR monitor. And I absolutely love this thing! Gorgeous colors. I know some people only use HDR when they are consuming HDR content, but in general, this display looks great with it on all the time, as Windows makes Adjustments to SDR content.
I do not wish to Record in HDR, as there are too many factors and hoops to take into account. But it seems recording HDR in SDR is just as complicated with my chosen form of capture.
In OBS the way that you would Play in HDR, but capture video in SDR, is to set the color space of the Game Capture source to REC 2100. This works flawlessly. But it does not take into account my desire to seemlessly go between desktop and game without switching sources, by using Display Capture
In Display Capture, it functions as I desire, and captures desktop content, that is "AutoHDR'd" flawlessly(only needing a slight brightness correction from a color correct filter) HOWEVER, when true HDR content hits the screen, it is blown out. One game I have been using to test this out is Party Animals, as it is an HDR game, and subtleties in color are very noticeable on the vibrant orange/yellow main menu.
There are two things I have found.
1. IF you apply a scaling or HDR Tone Mapping Filter as the top filter, everything HDR content will come down and not be blown out, however, the result has a less than flattering tinge to it, and whites are not bright enough to match the SDR content. It almost looks like a flatt, lifeless white, with a very very slight teal tinge.
2. Display Capture has a Force SDR option, but this destroys True HDR content just as badly.
No amount of Color Correcting or LUT editing can fix this issue, as both SDR content, and HDR content share the same display source, so corrections that help one destroy the other.

My ideal resolution to this issue would be to get an option to specifically set the Color Space of the Display Capture(which is a non existent feature atm)
I may not know everything, but I feel like, from what I have learned, this would be the easiest, and most straightforward quality of life change for Display Capture. But I'm sure there are alot of backend realities I don't understand.
I would like to forward this as a feedback/suggestion to OBS devs, but I figure this forum would be a place to start.
But I'd also accept any help and advice that is not "Don't Display Capture, just switch to Game Capture" (Please and Thank you )
 

Suslik V

Active Member
What OBS outputs (in terms of color space and format) is defined by the Settings > Advanced. Two (or more) independent color spaces, color formats for outputs not possible, yet. You can try to run two instances of OBS. Or you can try 2 PC setup with capture card.

SDR content should be viewed on SDR device. It should stay far away from HDR display device (be screened from bright light of HDR).
 

Winchester7314

New Member
What OBS outputs (in terms of color space and format) is defined by the Settings > Advanced. Two (or more) independent color spaces, color formats for outputs not possible, yet. You can try to run two instances of OBS. Or you can try 2 PC setup with capture card.

SDR content should be viewed on SDR device. It should stay far away from HDR display device (be screened from bright light of HDR).
You can define the color space of independent sources. You can do ot right now with "game capture" you just need to scroll to the bottom of its properties and select Rec 2100 in the color space. Obviously this does not define how the output of the entire recording looks, as this is defined in Settings>Advanced, but it does make the source look the way it should look in SDR, as it can properly downsample the color range.
 

Suslik V

Active Member
You want to play HDR. Record it as SDR. View SDR back on HDR display and then you complain that you don't like the result? And how to improve it?
 

Winchester7314

New Member
You want to play HDR. Record it as SDR. View SDR back on HDR display and then you complain that you don't like the result? And how to improve it?
Not quite sure what the snarkiness is over...maybe take a step back from the keyboard as I try to simplify this for you....
I want to play SDR and HDR content on my HDR Display. I want to Record it in SDR meaning SDR content will remain in SDR, while HDR will also be SDR. OBS does not down-sample HDR properly in Display Capture source . So It is too bright in output(whether I view it on an SDR or HDR Display after) The only way to bring HDR Content down to SDR Levels is to add filters, which affect SDR content at the same time.
Because The filter affects both HDR and SDR content it means that changes I make to balance one out, affect the other negatively. The reson this is not normally an issue for people, is that they make specific game captures for games. I prefer to have 1 Display Capture that covers all. So I'm not constantly source switching. But the lack of a color space setting on the source means that I can not cover the whole range.
This is not a problem in game capture, so again, All that is necessary would be to allow an adjustment of the color space in that particular source.
You're so concerned with the output of the recording, you are missing the entire point of my post, which is the input being a problem before it reaches the output. Maybe the hostility is because I pointed out and obvious feature to an active member and you didn't know this...no need to be defensive over not knowing a small piece of obvious information.
I appreciate that you were atleast attempting to help at first, but getting snarky in the responses doesn't speak well on OBS communities part.
If you can't be helpful other than telling me not to play SDR content in Windows AutoHDR, and making snarky half baked responses, then please just side step and allow others to try their hand at helping respectfully.
 

Winchester7314

New Member
I can try to make this maybe a bit simpler also, as maybe I'm not explaining the core problem well enoguh.
SDR Game + HDR Game on same source(Display Capture) played on HDR Display.
Input into OBS for SDR Output. (Rec 709+NV12)
HDR Blown out.
Applies Color Correction Filter to correct Gamma/Brightness.
HDR Looks Correct
SDR Looks Dimmer than SDR Content from other sources
Adjusts Filter to make SDR look correct.
SDR Looks Correct.
HDR is then Blown out.
Choosing Force SDR Does not remedy this, and instead puts you back to the filter step, juggling back and forth.
 

Suslik V

Active Member
OBS does not down-sample HDR properly in Display Capture source
This needs obs log-file, examples of what you see and what you get - test tables (test images). Because, if there is issue with OBS you need to explain to developers what is going on. It is very easy to get error on display or on encode with wrong encoder/player.
 

Winchester7314

New Member
This needs obs log-file, examples of what you see and what you get - test tables (test images). Because, if there is issue with OBS you need to explain to developers what is going on. It is very easy to get error on display or on encode with wrong encoder/player.
I was going to lead into that if the issue wasn't easily solved off my intro. I will try to upload some screenshots with consistencies and descriptions as to help see what happens. Along with a log.
Thank you
 

Suslik V

Active Member
This all details needed because OBS uses its own shaders to display image data via the Previews for any HDR content when preview window is located on SDR display and vise versa. It is complex thing.
 

Winchester7314

New Member
Also, take in mind that some additional questions that may arise, for example:

Where it is blown out?:
1) in OBS preview
2) In media player when I playback recording
etc.
Alot of what is negatively being impacted is whites/highlights. When my Display Capture is filtered to be correct when playing an HDR Game, it seems like whites and overall brightness is too low in an SDR game, far below what a normal SDR Capture would generate. I provided screenshots with MY othe SDR Display being captured behind it, so you can see the highlight/white difference in the torch on my wallpaper.
There are also screenshots of an SDR game, where you can see in the logo especially, that Highlights are going too low as a result of the color correction that made HDR appear correct.
Force SDR will blow out colors AND highlights in the HDR Game, and not using anything will result in an HDR Capture that is too dull in comparison to both what is on screen, and an accurate screenshot of the game in SDR.
It is present in both preview and Output. And I use windows "media player" and windows media player legacy as players. I also have MPC-HC which plays back the same results.
 
Last edited:

Suslik V

Active Member
According to: https://github.com/obsproject/obs-studio/issues/7970 and followed changes to OBS code
the option Force SDR was added to scale brightness of the SDR content that is captured via OBS Display Capture source that captures HDR display device (HDR enabled for this display device in Windows).

So, to get "right" colors for 8-bit recording, you need to enable Force SDR option in the properties of the Display Capture source.
There is no automatic selector for Force SDR option (yet).

The HDR Tone Mapping (Override) filter can be applied to HDR sources only (to fit them into lower color spaces*) and it physically modifies the final output of OBS.

To troubleshoot for color issues it is better to use test charts (test images with predictable output) and have very simple scene (you may create new Scene Collection with single Display Capture source in it and experiment with the options and filters).

*Edit: HDRs can be different, with different nits ("brightness" levels), so not only conversion HDR > SDR is possible, but also HDR > HDR (new nits).


Edit: unneeded info was removed, just ignore it. Keep two scenes - with Force SDR enabled and disabled, and switch between them when needed.
 
Last edited:

Winchester7314

New Member
According to: https://github.com/obsproject/obs-studio/issues/7970 and followed changes to OBS code
the option Force SDR was added to scale brightness of the SDR content that is captured via OBS Display Capture source that captures HDR display device (HDR enabled for this display device in Windows).

So, to get "right" colors for 8-bit recording, you need to enable Force SDR option in the properties of the Display Capture source.
There is no automatic selector for Force SDR option (yet).

The HDR Tone Mapping (Override) filter can be applied to HDR sources only (to fit them into lower color spaces*) and it physically modifies the final output of OBS.

To troubleshoot for color issues it is better to use test charts (test images with predictable output) and have very simple scene (you may create new Scene Collection with single Display Capture source in it and experiment with the options and filters).

*Edit: HDRs can be different, with different nits ("brightness" levels), so not only conversion HDR > SDR is possible, but also HDR > HDR (new nits).


Edit: unneeded info was removed, just ignore it. Keep two scenes - with Force SDR enabled and disabled, and switch between them when needed.
Still, even if uneeded, I think it was informative. Base on what tinkering I've done, and what info you've dropped, I think the best balance of all issues is to use Force SDR when consuming SDR Content. TBH the easiest way to not have to toggle that will be to have two Display Capture sources exactly the same. One with it enabled, and one without. Just toggling them when switching. Though I'd rather not do that, the only close alternative is just to have the correction filters that give a correct hdr to SDR appearance, and just a low highlight SDR.
Still working out the specifics of how I want to do that, but it seems the crux of the issue is that when one source has to display two different ranges(SDR and HDR) it doesn't know when I'm doing one over the other or how to differentiate as its not within the scope of "Display Capture"
Would be nice if OBS Devs could implement this ability in future builds, but I know HDR is definitely something that the industry is trying to implement, but its not easy.
I could probably just link this post in their Github to inquire if they could see what could be done on their end?
 

Suslik V

Active Member
You can add your thoughts here:
(no guarantee that it will succeed, but anyway)
 

Winchester7314

New Member
Slight Update:
I have been attempting to go the route of having a fullscreen game capture with Color Space REC2100 that overlays my display capture while in game...this seemed to be working but I found while it perfected Party Animals HDR look, it destroyed certain specific games like Ghostrunner, MK11, and in some games that it didn't destroy, like witcher 3, for some reason it didn't have enough Contrast.
So I went back to the drawing board, and decided that Force SDR was my best option for Display Capture, as not all games were destroyed by this. Then, in the case of games that are destroyed by Force SDR, like Party Animals, that is when I will create Game Captures that focus on those specific windows. So the REC 2100 only kicks in when a game needs it.
I think this is all just side effects of different implementations of HDR, and that I obviously make itr harder by wanting it all on one source. That being said, my final chosen option seems to be the least bothersome option. So in the odd case that anyone is trying to do what I'm doing(unlikely cause I'm a stubborn SOB that way :P ) , then this is what you should do:

Display Capture = Force SDR
else:
seperate source "Game Capture" = REC 2100 Color Space and slight Color Corrections as needed, directed to "specific windows", not "any fullscreen".
The best, hassle free method "IMHO"
 
Top