Thanks for the d3d11 update. It’s great. Do you think Plex htcp will ever be able to turn on windows HDR provided the conditions exist, similar to auto switching refresh rate and resolution?
You are holding it wrong. If you have a HDR capable screen, you are supposed to switch on HDR permanently. Not switch it on and off all the time.
Otherwise you will get much too bright luminance and “candy colors” in all apps which are not HDR capable yet.
I can’t get that to work in Windows, the desktop and normal apps look terrible when HDR is turned on.
Then your screen is either not properly HDR capable. (Yes, screens like this exist, unfortunately)
Or it has been dialed in abhorrently wrong parameters for the picture. (Brightness, contrast, color intensity etc pp.)
Best is to reset the screen to default settings.
Then activate HDR in Windows.
The overall brightness should go down, as soon as you do this.
On the same page where you activate the HDR mode, there’s a slider where you can adjust the brightness of the windows GUI further.
Use this in combination with the brightness dial on your monitor to achieve an eye friendly brightness for non-HDR capable apps.
(Rule of thumb: if your eyes start to burn after an hour, the screen is still too bright. Test this with apps which show black text on white background, like a spreadsheet app or a word processor.)
If the screen is used only for video watching and not for regular desktop computing, you can dial it to a higher brightness.
In my experience, the picture of HDR capable games will look pretty decent after doing the above. Most games have also an additional HDR brightness dial which you may want to adjust.
Don’t expect regular non-HDR videos to achieve the same color vibrancy and peak brightness as HDR videos.
plex htpc does not correctly support true hdr despite what has been stated at present because mpv is currently incapable of activating required api’s and passing metadata correctly.
at present it more or less tonemaps(converts) the image to sdr,and then relies on the windows setting to artificially expand it back to hdr,this is a lossy messy inferiour method to api metadata true hdr passthough.
the hdr windows setting if left on will also convert(expand) and massacre to a greater extent an sdr range image.
it does this again via tonemapping convertions due to windows hdr switch and converting results in quality loss no matter how good or new your display is(i have this an lg c1)
this isnt too bad for games but a complete mess for video.
if all you want is a bright image sure then its fine but if you care for quality it matters.
Only in Windows 11, not in Windows 10, right?
I also have a problem with this using the regular Windows Plex client (the PC is connected to an AVR). So I’m hoping your fix for this will not only apply to HTPC but also the Windows client.
Interesting. Despite my best efforts none of that is practical on my Win 10 system. The screen has been calibrated too, albeit in SDR mode. No idea if my calibrator supports HDR mode, I should check it out.
I’ve never seen that.
My monitor is only HDR400, which I know is not true HDR at all, but the appalling color shift in HDR mode makes it worse than useless. It’s a good color-accurate screen in SDR mode so I don’t know why HDR seems broken.
If an HDR video is playing, the video looks OK, albeit a bit too blue. But I don’t think it looks better overall.
Fortunately I did not buy the monitor for its HDR capabilities!
I can imagine that this might be indeed a source of trouble.
Calibration is only tiny tweaks to RGB levels for color accuracy, not massive changes. If I switch between the Windows default generic LCD profile and my calibrated profile, the difference is small – and HDR does not work any better on an uncalibrated screen, anyway.
If I AM supposed to be able to stay in HDR mode allllll the time on Win 10, something is up though. Anyway, I have threadjacked enough, sorry for the diversion.
Logs are going to be a necessity here for both when you are using ANGLE and D3D11. With each you will need to play at least 10 seconds as that’s is frequency of when the debug info is logged.
Additionally you should test with the standalone MPV application playing the same file. Do note that you will need to add the --hwdec=auto to enable hardware decoding and by default MPV uses quality options which are akin to the Low Quality setting in Plex HTPC.
Not one posted anywhere yet but it is coming as well.
Awesome, thanks! Tested over the weekend watching the LOTR trilogy and so far so good. Running an RTX 2070 and Win11.
I can’t speak for everyone’s experience, but on my Sony TV it intentionally runs in distinct modes for HDR and SDR. Properly signaled HDR content will trigger the TV to switch to the BT.2020 color space and also allow for much greater screen brightness to accommodate the higher nit content. SDR mode then handles the BT.709 content with far lower peak brightness.
For me, when HDR is enabled on Windows all the time, SDR content looks bad as there’s a color space mismatch (BT.709 source, BT.2020 TV). I saw this in Plex HTPC (with d3d11 enabled) watching LOTR in HDR, then attempting to watch Boardwalk Empire in SDR. Toggling HDR off resulted in normal playback of the SDR content.
I supposed Windows might get better at handling everything with HDR toggled on, but as someone coming from MadVR for HDR playback, auto-toggling HDR on when sending HDR content and then leaving it off when not playing back HDR content just makes sense. If Windows is trying to turn HDR mode into an all-purpose mode that can handle SDR and HDR content, then they need to actually respect & signal the color primaries properly.
Hey, I have a really annoying problem with the newstes update. Almost always after I watched an episode I can’t watch another one without restarting Plex HTPC. The error says “An unexpected playback problem has occurred” (translated from German).
I have Windows 11, a RTX 3080 and a AMD Ryzen 5 5600X.
My log file:
Plex HTPC.log (3.7 MB)
Your logs are full of Der aktuelle Prozess verwendet alle Handles der zulässigen Höchstanzahl für Window Managerobjekte. which is indicating that Windows has limited the number of process handles for the application and it has hit that limit. This is definitively the cause of why you cannot play the second file because it needs a handle to allocate the video window in the second playback. This message is not normal and I’ve not seen it for others so any idea why it is present on your system?
I did not had this problem with any of the previous versions. Apart from that, there are only other small programs running in the background, which are not crucial. ![]()
Here is my mpv.cfg btw:
mpv.zip (658 Bytes)
On the topic of setting HDR in the Windows settings vs the app configuring HDR, I discussed this with some MPV developers. They said that Microsoft has told driver vendors to not auto-set the color-space regardless of whether the a window is fullscreen or what swapchain it may be using. So that has left us in the situation where it may still work but it depends on the drivers/hardware in use. Otherwise you will need to turn on HDR in the Windows settings and rely on it mapping the swapchain’s color-space to the screen’s. (currently when you are playing HDR content, it is using a BT.2020 colorspace in its swapchain). There is hope for a better experience with some of the future development but that may not be a while (if you like things such as hardware decoding and more stable code).
I can post the raw logs later if needed. After some trial and error, I was able to get mpv 0.34.0-221-g1c49d5735d to play my HDR files smoothly, with:
--vo=gpu --gpu-api=d3d11 --gpu-context=d3d11 --hwdec=d3d11va --hwdec-codecs=all
However, duplicating these settings in the mpv.conf as:
vo=gpu
gpu-api=d3d11
gpu-context=d3d11
hwdec=d3d11va
hwdec-codecs=all
Did not resolve my stuttering/dropped frame issue.
I combed through the Plex HTPC and mpv logs side by side and the only notable difference I was able to find was this section in the mpv log:
[ 0.240][v][vo/gpu] Testing FBO format rgba16hf
[ 0.240][d][vo/gpu] Resizing texture: 16x16
[ 0.240][v][vo/gpu] Using FBO format rgba16hf.
[ 0.240][v][vo/gpu] No advanced processing required. Enabling dumb mode.
[ 0.240][v][vo/gpu/win32] DPI detected from the new API: 96
[ 0.240][v][vo/gpu/win32] display-fps: 23.976024
[ 0.242][v][vo/gpu] Assuming 23.976024 FPS for display sync.
whereas Plex HTPC log had this:
Mar 07, 2022 22:53:16.922 [2420] DEBUG - [MPVEngine/mpv] vo/gpu: Testing FBO format rgba16hf
Mar 07, 2022 22:53:16.922 [2420] DEBUG - [MPVEngine/mpv] vo/gpu: Using FBO format rgba16hf.
Mar 07, 2022 22:53:16.924 [2420] DEBUG - [MPVEngine/mpv] vo/gpu: Resize: 3840x2160
Mar 07, 2022 22:53:16.924 [2420] DEBUG - [MPVEngine/mpv] vo/gpu: Reported display depth: 10
Mar 07, 2022 22:53:16.924 [2420] DEBUG - [MPVEngine/mpv] vo/gpu: Assuming 23.976024 FPS for display sync.
There was also this chunk in the mpv log that was nowhere to be found in the Plex HTPC log, but I’m not sure how relevant it is:
[ 0.238][d][vo/gpu/d3d11] Texture formats:
[ 0.238][d][vo/gpu/d3d11] NAME COMP*TYPE SIZE DEPTH PER COMP.
[ 0.238][d][vo/gpu/d3d11] r8 1*unorm 1B LF CR ST {8}
[ 0.238][d][vo/gpu/d3d11] rg8 2*unorm 2B LF CR ST {8 8}
[ 0.238][d][vo/gpu/d3d11] rgba8 4*unorm 4B LF CR ST {8 8 8 8}
[ 0.238][d][vo/gpu/d3d11] r16 1*unorm 2B LF CR ST {16}
[ 0.238][d][vo/gpu/d3d11] rg16 2*unorm 4B LF CR ST {16 16}
[ 0.238][d][vo/gpu/d3d11] rgba16 4*unorm 8B LF CR ST {16 16 16 16}
[ 0.238][d][vo/gpu/d3d11] r32ui 1*uint 4B ST {32}
[ 0.238][d][vo/gpu/d3d11] rg32ui 2*uint 8B ST {32 32}
[ 0.238][d][vo/gpu/d3d11] rgb32ui 3*uint 12B {32 32 32}
[ 0.238][d][vo/gpu/d3d11] rgba32ui 4*uint 16B ST {32 32 32 32}
[ 0.238][d][vo/gpu/d3d11] r16hf 1*float 2B LF CR ST {16}
[ 0.238][d][vo/gpu/d3d11] rg16hf 2*float 4B LF CR ST {16 16}
[ 0.238][d][vo/gpu/d3d11] rgba16hf 4*float 8B LF CR ST {16 16 16 16}
[ 0.238][d][vo/gpu/d3d11] r32f 1*float 4B LF CR ST {32}
[ 0.238][d][vo/gpu/d3d11] rg32f 2*float 8B LF CR ST {32 32}
[ 0.238][d][vo/gpu/d3d11] rgb32f 3*float 12B {32 32 32}
[ 0.238][d][vo/gpu/d3d11] rgba32f 4*float 16B LF CR ST {32 32 32 32}
[ 0.238][d][vo/gpu/d3d11] rgb10_a2 4*unorm 4B LF CR ST {10 10 10 2}
[ 0.238][d][vo/gpu/d3d11] bgra8 4*unorm 4B LF CR ST {8 8 8 8}
[ 0.238][d][vo/gpu/d3d11] bgrx8 3*unorm 4B LF CR {8 8 8}
[ 0.238][d][vo/gpu/d3d11] LA = LUMINANCE_ALPHA hack format
[ 0.238][d][vo/gpu/d3d11] LF = linear filterable
[ 0.238][d][vo/gpu/d3d11] CR = can be used for render targets
[ 0.238][d][vo/gpu/d3d11] ST = can be used for storable images
[ 0.238][d][vo/gpu/d3d11] Image formats:
[ 0.238][d][vo/gpu/d3d11] yuv444p => 3 planes 1x1 8/0 [r8/r8/r8] (r/g/b) [unorm]
[ 0.238][d][vo/gpu/d3d11] yuv420p => 3 planes 2x2 8/0 [r8/r8/r8] (r/g/b) [unorm]
[ 0.238][d][vo/gpu/d3d11] gray => 1 planes 1x1 8/0 [r8] (r) [unorm]
[ 0.238][d][vo/gpu/d3d11] gray16 => 1 planes 1x1 16/0 [r16] (r) [unorm]
[ 0.238][d][vo/gpu/d3d11] uyvy422
[ 0.238][d][vo/gpu/d3d11] nv12 => 2 planes 2x2 8/0 [r8/rg8] (r/gb) [unorm]
[ 0.238][d][vo/gpu/d3d11] p010 => 2 planes 2x2 16/6 [r16/rg16] (r/gb) [unorm]
[ 0.238][d][vo/gpu/d3d11] argb => 1 planes 1x1 8/0 [rgba8] (argb) [unorm]
[ 0.238][d][vo/gpu/d3d11] bgra => 1 planes 1x1 8/0 [rgba8] (bgra) [unorm]
[ 0.238][d][vo/gpu/d3d11] abgr => 1 planes 1x1 8/0 [rgba8] (abgr) [unorm]
[ 0.238][d][vo/gpu/d3d11] rgba => 1 planes 1x1 8/0 [rgba8] (rgba) [unorm]
[ 0.238][d][vo/gpu/d3d11] bgr24
[ 0.238][d][vo/gpu/d3d11] rgb24
[ 0.238][d][vo/gpu/d3d11] 0rgb => 1 planes 1x1 8/0 [rgba8] (_rgb) [unorm]
[ 0.238][d][vo/gpu/d3d11] bgr0 => 1 planes 1x1 8/0 [rgba8] (bgr) [unorm]
[ 0.238][d][vo/gpu/d3d11] 0bgr => 1 planes 1x1 8/0 [rgba8] (_bgr) [unorm]
[ 0.238][d][vo/gpu/d3d11] rgb0 => 1 planes 1x1 8/0 [rgba8] (rgb) [unorm]
[ 0.238][d][vo/gpu/d3d11] rgba64 => 1 planes 1x1 16/0 [rgba16] (rgba) [unorm]
[ 0.238][d][vo/gpu/d3d11] rgb565
[ 0.238][d][vo/gpu/d3d11] pal8
[ 0.238][d][vo/gpu/d3d11] vdpau
[ 0.238][d][vo/gpu/d3d11] d3d11
[ 0.238][d][vo/gpu/d3d11] dxva2_vld
[ 0.238][d][vo/gpu/d3d11] mmal
[ 0.238][d][vo/gpu/d3d11] mediacodec
[ 0.238][d][vo/gpu/d3d11] drm_prime
[ 0.238][d][vo/gpu/d3d11] cuda
[ 0.238][d][vo/gpu/d3d11] yap8 => 2 planes 1x1 8/0 [r8/r8] (r/a) [unorm]
[ 0.238][d][vo/gpu/d3d11] yap16 => 2 planes 1x1 16/0 [r16/r16] (r/a) [unorm]
[ 0.238][d][vo/gpu/d3d11] grayaf32 => 2 planes 1x1 32/0 [r32f/r32f] (r/a) [float]
[ 0.238][d][vo/gpu/d3d11] yuv444pf => 3 planes 1x1 32/0 [r32f/r32f/r32f] (r/g/b) [float]
[ 0.238][d][vo/gpu/d3d11] yuva444pf => 4 planes 1x1 32/0 [r32f/r32f/r32f/r32f] (r/g/b/a) [float]
[ 0.238][d][vo/gpu/d3d11] yuv420pf => 3 planes 2x2 32/0 [r32f/r32f/r32f] (r/g/b) [float]
[ 0.238][d][vo/gpu/d3d11] yuva420pf => 4 planes 2x2 32/0 [r32f/r32f/r32f/r32f] (r/g/b/a) [float]
[ 0.238][d][vo/gpu/d3d11] yuv422pf => 3 planes 2x1 32/0 [r32f/r32f/r32f] (r/g/b) [float]
[ 0.238][d][vo/gpu/d3d11] yuva422pf => 4 planes 2x1 32/0 [r32f/r32f/r32f/r32f] (r/g/b/a) [float]
[ 0.238][d][vo/gpu/d3d11] yuv440pf => 3 planes 1x2 32/0 [r32f/r32f/r32f] (r/g/b) [float]
[ 0.238][d][vo/gpu/d3d11] yuva440pf => 4 planes 1x2 32/0 [r32f/r32f/r32f/r32f] (r/g/b/a) [float]
[ 0.238][d][vo/gpu/d3d11] yuv410pf => 3 planes 4x4 32/0 [r32f/r32f/r32f] (r/g/b) [float]
[ 0.238][d][vo/gpu/d3d11] yuva410pf => 4 planes 4x4 32/0 [r32f/r32f/r32f/r32f] (r/g/b/a) [float]
[ 0.238][d][vo/gpu/d3d11] yuv411pf => 3 planes 4x1 32/0 [r32f/r32f/r32f] (r/g/b) [float]
[ 0.238][d][vo/gpu/d3d11] yuva411pf => 4 planes 4x1 32/0 [r32f/r32f/r32f/r32f] (r/g/b/a) [float]
[ 0.239][d][vo/gpu/d3d11] rgb30
[ 0.239][d][vo/gpu/d3d11] y1 => 1 planes 1x1 8/-7 [r8] (r) [unorm]
[ 0.239][d][vo/gpu/d3d11] gbrp1 => 3 planes 1x1 8/-7 [r8/r8/r8] (g/b/r) [unorm]
[ 0.239][d][vo/gpu/d3d11] gbrp2 => 3 planes 1x1 8/-6 [r8/r8/r8] (g/b/r) [unorm]
[ 0.239][d][vo/gpu/d3d11] gbrp3 => 3 planes 1x1 8/-5 [r8/r8/r8] (g/b/r) [unorm]
[ 0.239][d][vo/gpu/d3d11] gbrp4 => 3 planes 1x1 8/-4 [r8/r8/r8] (g/b/r) [unorm]
[ 0.239][d][vo/gpu/d3d11] gbrp5 => 3 planes 1x1 8/-3 [r8/r8/r8] (g/b/r) [unorm]
[ 0.239][d][vo/gpu/d3d11] gbrp6 => 3 planes 1x1 8/-2 [r8/r8/r8] (g/b/r) [unorm]
[ 0.239][d][vo/gpu/d3d11] vdpau_output
[ 0.239][d][vo/gpu/d3d11] vaapi
[ 0.239][d][vo/gpu/d3d11] videotoolbox
[ 0.239][d][vo/gpu/d3d11] yuyv422
[ 0.239][d][vo/gpu/d3d11] yuv422p => 3 planes 2x1 8/0 [r8/r8/r8] (r/g/b) [unorm]
[ 0.239][d][vo/gpu/d3d11] yuv410p => 3 planes 4x4 8/0 [r8/r8/r8] (r/g/b) [unorm]
[ 0.239][d][vo/gpu/d3d11] yuv411p => 3 planes 4x1 8/0 [r8/r8/r8] (r/g/b) [unorm]
[ 0.239][d][vo/gpu/d3d11] monow
[ 0.239][d][vo/gpu/d3d11] monob
[ 0.239][d][vo/gpu/d3d11] yuvj422p => 3 planes 2x1 8/0 [r8/r8/r8] (r/g/b) [unorm]
[ 0.239][d][vo/gpu/d3d11] uyyvyy411
[ 0.239][d][vo/gpu/d3d11] bgr8
[ 0.239][d][vo/gpu/d3d11] bgr4
[ 0.239][d][vo/gpu/d3d11] bgr4_byte
[ 0.239][d][vo/gpu/d3d11] rgb8
[ 0.239][d][vo/gpu/d3d11] rgb4
[ 0.239][d][vo/gpu/d3d11] rgb4_byte
[ 0.239][d][vo/gpu/d3d11] nv21 => 2 planes 2x2 8/0 [r8/rg8] (r/bg) [unorm]
[ 0.239][d][vo/gpu/d3d11] gray16be
[ 0.239][d][vo/gpu/d3d11] yuv440p => 3 planes 1x2 8/0 [r8/r8/r8] (r/g/b) [unorm]
[ 0.239][d][vo/gpu/d3d11] yuvj440p => 3 planes 1x2 8/0 [r8/r8/r8] (r/g/b) [unorm]
[ 0.239][d][vo/gpu/d3d11] yuva420p => 4 planes 2x2 8/0 [r8/r8/r8/r8] (r/g/b/a) [unorm]
[ 0.239][d][vo/gpu/d3d11] rgb48be
[ 0.239][d][vo/gpu/d3d11] rgb48
[ 0.239][d][vo/gpu/d3d11] rgb565be
[ 0.239][d][vo/gpu/d3d11] rgb555be
[ 0.239][d][vo/gpu/d3d11] rgb555
[ 0.239][d][vo/gpu/d3d11] bgr565be
[ 0.239][d][vo/gpu/d3d11] bgr565
[ 0.239][d][vo/gpu/d3d11] bgr555be
[ 0.239][d][vo/gpu/d3d11] bgr555
[ 0.239][d][vo/gpu/d3d11] yuv420p16 => 3 planes 2x2 16/0 [r16/r16/r16] (r/g/b) [unorm]
[ 0.239][d][vo/gpu/d3d11] yuv420p16be
[ 0.239][d][vo/gpu/d3d11] yuv422p16 => 3 planes 2x1 16/0 [r16/r16/r16] (r/g/b) [unorm]
[ 0.239][d][vo/gpu/d3d11] yuv422p16be
[ 0.239][d][vo/gpu/d3d11] yuv444p16 => 3 planes 1x1 16/0 [r16/r16/r16] (r/g/b) [unorm]
[ 0.239][d][vo/gpu/d3d11] yuv444p16be
[ 0.239][d][vo/gpu/d3d11] rgb444
[ 0.239][d][vo/gpu/d3d11] rgb444be
[ 0.239][d][vo/gpu/d3d11] bgr444
[ 0.239][d][vo/gpu/d3d11] bgr444be
[ 0.239][d][vo/gpu/d3d11] ya8 => 1 planes 1x1 8/0 [rg8] (ra) [unorm]
[ 0.239][d][vo/gpu/d3d11] bgr48be
[ 0.239][d][vo/gpu/d3d11] bgr48
[ 0.239][d][vo/gpu/d3d11] yuv420p9be
[ 0.239][d][vo/gpu/d3d11] yuv420p9 => 3 planes 2x2 16/-7 [r16/r16/r16] (r/g/b) [unorm]
[ 0.239][d][vo/gpu/d3d11] yuv420p10be
[ 0.239][d][vo/gpu/d3d11] yuv420p10 => 3 planes 2x2 16/-6 [r16/r16/r16] (r/g/b) [unorm]
[ 0.239][d][vo/gpu/d3d11] yuv422p10be
[ 0.239][d][vo/gpu/d3d11] yuv422p10 => 3 planes 2x1 16/-6 [r16/r16/r16] (r/g/b) [unorm]
[ 0.239][d][vo/gpu/d3d11] yuv444p9be
[ 0.239][d][vo/gpu/d3d11] yuv444p9 => 3 planes 1x1 16/-7 [r16/r16/r16] (r/g/b) [unorm]
[ 0.239][d][vo/gpu/d3d11] yuv444p10be
[ 0.239][d][vo/gpu/d3d11] yuv444p10 => 3 planes 1x1 16/-6 [r16/r16/r16] (r/g/b) [unorm]
[ 0.239][d][vo/gpu/d3d11] yuv422p9be
[ 0.239][d][vo/gpu/d3d11] yuv422p9 => 3 planes 2x1 16/-7 [r16/r16/r16] (r/g/b) [unorm]
[ 0.239][d][vo/gpu/d3d11] gbrp => 3 planes 1x1 8/0 [r8/r8/r8] (g/b/r) [unorm]
[ 0.239][d][vo/gpu/d3d11] gbrp9be
[ 0.239][d][vo/gpu/d3d11] gbrp9 => 3 planes 1x1 16/-7 [r16/r16/r16] (g/b/r) [unorm]
[ 0.239][d][vo/gpu/d3d11] gbrp10be
[ 0.239][d][vo/gpu/d3d11] gbrp10 => 3 planes 1x1 16/-6 [r16/r16/r16] (g/b/r) [unorm]
[ 0.239][d][vo/gpu/d3d11] gbrp16be
[ 0.239][d][vo/gpu/d3d11] gbrp16 => 3 planes 1x1 16/0 [r16/r16/r16] (g/b/r) [unorm]
[ 0.239][d][vo/gpu/d3d11] yuva422p => 4 planes 2x1 8/0 [r8/r8/r8/r8] (r/g/b/a) [unorm]
[ 0.239][d][vo/gpu/d3d11] yuva444p => 4 planes 1x1 8/0 [r8/r8/r8/r8] (r/g/b/a) [unorm]
[ 0.239][d][vo/gpu/d3d11] yuva420p9be
[ 0.239][d][vo/gpu/d3d11] yuva420p9 => 4 planes 2x2 16/-7 [r16/r16/r16/r16] (r/g/b/a) [unorm]
[ 0.239][d][vo/gpu/d3d11] yuva422p9be
[ 0.239][d][vo/gpu/d3d11] yuva422p9 => 4 planes 2x1 16/-7 [r16/r16/r16/r16] (r/g/b/a) [unorm]
[ 0.239][d][vo/gpu/d3d11] yuva444p9be
[ 0.239][d][vo/gpu/d3d11] yuva444p9 => 4 planes 1x1 16/-7 [r16/r16/r16/r16] (r/g/b/a) [unorm]
[ 0.239][d][vo/gpu/d3d11] yuva420p10be
[ 0.239][d][vo/gpu/d3d11] yuva420p10 => 4 planes 2x2 16/-6 [r16/r16/r16/r16] (r/g/b/a) [unorm]
[ 0.239][d][vo/gpu/d3d11] yuva422p10be
[ 0.239][d][vo/gpu/d3d11] yuva422p10 => 4 planes 2x1 16/-6 [r16/r16/r16/r16] (r/g/b/a) [unorm]
[ 0.239][d][vo/gpu/d3d11] yuva444p10be
[ 0.239][d][vo/gpu/d3d11] yuva444p10 => 4 planes 1x1 16/-6 [r16/r16/r16/r16] (r/g/b/a) [unorm]
[ 0.239][d][vo/gpu/d3d11] yuva420p16be
[ 0.239][d][vo/gpu/d3d11] yuva420p16 => 4 planes 2x2 16/0 [r16/r16/r16/r16] (r/g/b/a) [unorm]
[ 0.239][d][vo/gpu/d3d11] yuva422p16be
[ 0.239][d][vo/gpu/d3d11] yuva422p16 => 4 planes 2x1 16/0 [r16/r16/r16/r16] (r/g/b/a) [unorm]
[ 0.239][d][vo/gpu/d3d11] yuva444p16be
[ 0.239][d][vo/gpu/d3d11] yuva444p16 => 4 planes 1x1 16/0 [r16/r16/r16/r16] (r/g/b/a) [unorm]
[ 0.239][d][vo/gpu/d3d11] xyz12
[ 0.239][d][vo/gpu/d3d11] xyz12be
[ 0.239][d][vo/gpu/d3d11] nv16 => 2 planes 2x1 8/0 [r8/rg8] (r/gb) [unorm]
[ 0.239][d][vo/gpu/d3d11] nv20 => 2 planes 2x1 16/-6 [r16/rg16] (r/gb) [unorm]
[ 0.239][d][vo/gpu/d3d11] nv20be
[ 0.239][d][vo/gpu/d3d11] rgba64be
[ 0.239][d][vo/gpu/d3d11] bgra64be
[ 0.239][d][vo/gpu/d3d11] bgra64 => 1 planes 1x1 16/0 [rgba16] (bgra) [unorm]
[ 0.239][d][vo/gpu/d3d11] yvyu422
[ 0.239][d][vo/gpu/d3d11] ya16be
[ 0.239][d][vo/gpu/d3d11] ya16 => 1 planes 1x1 16/0 [rg16] (ra) [unorm]
[ 0.239][d][vo/gpu/d3d11] gbrap => 4 planes 1x1 8/0 [r8/r8/r8/r8] (g/b/r/a) [unorm]
[ 0.239][d][vo/gpu/d3d11] gbrap16be
[ 0.239][d][vo/gpu/d3d11] gbrap16 => 4 planes 1x1 16/0 [r16/r16/r16/r16] (g/b/r/a) [unorm]
[ 0.239][d][vo/gpu/d3d11] qsv
[ 0.239][d][vo/gpu/d3d11] d3d11va_vld
[ 0.239][d][vo/gpu/d3d11] yuv420p12be
[ 0.239][d][vo/gpu/d3d11] yuv420p12 => 3 planes 2x2 16/-4 [r16/r16/r16] (r/g/b) [unorm]
[ 0.239][d][vo/gpu/d3d11] yuv420p14be
[ 0.239][d][vo/gpu/d3d11] yuv420p14 => 3 planes 2x2 16/-2 [r16/r16/r16] (r/g/b) [unorm]
[ 0.239][d][vo/gpu/d3d11] yuv422p12be
[ 0.239][d][vo/gpu/d3d11] yuv422p12 => 3 planes 2x1 16/-4 [r16/r16/r16] (r/g/b) [unorm]
[ 0.239][d][vo/gpu/d3d11] yuv422p14be
[ 0.239][d][vo/gpu/d3d11] yuv422p14 => 3 planes 2x1 16/-2 [r16/r16/r16] (r/g/b) [unorm]
[ 0.239][d][vo/gpu/d3d11] yuv444p12be
[ 0.239][d][vo/gpu/d3d11] yuv444p12 => 3 planes 1x1 16/-4 [r16/r16/r16] (r/g/b) [unorm]
[ 0.239][d][vo/gpu/d3d11] yuv444p14be
[ 0.239][d][vo/gpu/d3d11] yuv444p14 => 3 planes 1x1 16/-2 [r16/r16/r16] (r/g/b) [unorm]
[ 0.239][d][vo/gpu/d3d11] gbrp12be
[ 0.239][d][vo/gpu/d3d11] gbrp12 => 3 planes 1x1 16/-4 [r16/r16/r16] (g/b/r) [unorm]
[ 0.240][d][vo/gpu/d3d11] gbrp14be
[ 0.240][d][vo/gpu/d3d11] gbrp14 => 3 planes 1x1 16/-2 [r16/r16/r16] (g/b/r) [unorm]
[ 0.240][d][vo/gpu/d3d11] yuvj411p => 3 planes 4x1 8/0 [r8/r8/r8] (r/g/b) [unorm]
[ 0.240][d][vo/gpu/d3d11] bayer_bggr8
[ 0.240][d][vo/gpu/d3d11] bayer_rggb8
[ 0.240][d][vo/gpu/d3d11] bayer_gbrg8
[ 0.240][d][vo/gpu/d3d11] bayer_grbg8
[ 0.240][d][vo/gpu/d3d11] bayer_bggr16
[ 0.240][d][vo/gpu/d3d11] bayer_bggr16be
[ 0.240][d][vo/gpu/d3d11] bayer_rggb16
[ 0.240][d][vo/gpu/d3d11] bayer_rggb16be
[ 0.240][d][vo/gpu/d3d11] bayer_gbrg16
[ 0.240][d][vo/gpu/d3d11] bayer_gbrg16be
[ 0.240][d][vo/gpu/d3d11] bayer_grbg16
[ 0.240][d][vo/gpu/d3d11] bayer_grbg16be
[ 0.240][d][vo/gpu/d3d11] xvmc
[ 0.240][d][vo/gpu/d3d11] yuv440p10 => 3 planes 1x2 16/-6 [r16/r16/r16] (r/g/b) [unorm]
[ 0.240][d][vo/gpu/d3d11] yuv440p10be
[ 0.240][d][vo/gpu/d3d11] yuv440p12 => 3 planes 1x2 16/-4 [r16/r16/r16] (r/g/b) [unorm]
[ 0.240][d][vo/gpu/d3d11] yuv440p12be
[ 0.240][d][vo/gpu/d3d11] ayuv64 => 1 planes 1x1 16/0 [rgba16] (argb) [unorm]
[ 0.240][d][vo/gpu/d3d11] ayuv64be
[ 0.240][d][vo/gpu/d3d11] p010be
[ 0.240][d][vo/gpu/d3d11] gbrap12be
[ 0.240][d][vo/gpu/d3d11] gbrap12 => 4 planes 1x1 16/-4 [r16/r16/r16/r16] (g/b/r/a) [unorm]
[ 0.240][d][vo/gpu/d3d11] gbrap10be
[ 0.240][d][vo/gpu/d3d11] gbrap10 => 4 planes 1x1 16/-6 [r16/r16/r16/r16] (g/b/r/a) [unorm]
[ 0.240][d][vo/gpu/d3d11] gray12be
[ 0.240][d][vo/gpu/d3d11] gray12 => 1 planes 1x1 16/-4 [r16] (r) [unorm]
[ 0.240][d][vo/gpu/d3d11] gray10be
[ 0.240][d][vo/gpu/d3d11] gray10 => 1 planes 1x1 16/-6 [r16] (r) [unorm]
[ 0.240][d][vo/gpu/d3d11] p016 => 2 planes 2x2 16/0 [r16/rg16] (r/gb) [unorm]
[ 0.240][d][vo/gpu/d3d11] p016be
[ 0.240][d][vo/gpu/d3d11] gray9be
[ 0.240][d][vo/gpu/d3d11] gray9 => 1 planes 1x1 16/-7 [r16] (r) [unorm]
[ 0.240][d][vo/gpu/d3d11] gbrpf32be
[ 0.240][d][vo/gpu/d3d11] gbrpf32 => 3 planes 1x1 32/0 [r32f/r32f/r32f] (g/b/r) [float]
[ 0.240][d][vo/gpu/d3d11] gbrapf32be
[ 0.240][d][vo/gpu/d3d11] gbrapf32 => 4 planes 1x1 32/0 [r32f/r32f/r32f/r32f] (g/b/r/a) [float]
[ 0.240][d][vo/gpu/d3d11] opencl
[ 0.240][d][vo/gpu/d3d11] gray14be
[ 0.240][d][vo/gpu/d3d11] gray14 => 1 planes 1x1 16/-2 [r16] (r) [unorm]
[ 0.240][d][vo/gpu/d3d11] grayf32be
[ 0.240][d][vo/gpu/d3d11] grayf32 => 1 planes 1x1 32/0 [r32f] (r) [float]
[ 0.240][d][vo/gpu/d3d11] yuva422p12be
[ 0.240][d][vo/gpu/d3d11] yuva422p12 => 4 planes 2x1 16/-4 [r16/r16/r16/r16] (r/g/b/a) [unorm]
[ 0.240][d][vo/gpu/d3d11] yuva444p12be
[ 0.240][d][vo/gpu/d3d11] yuva444p12 => 4 planes 1x1 16/-4 [r16/r16/r16/r16] (r/g/b/a) [unorm]
[ 0.240][d][vo/gpu/d3d11] nv24 => 2 planes 1x1 8/0 [r8/rg8] (r/gb) [unorm]
[ 0.240][d][vo/gpu/d3d11] nv42 => 2 planes 1x1 8/0 [r8/rg8] (r/bg) [unorm]
[ 0.240][d][vo/gpu/d3d11] vulkan
[ 0.240][d][vo/gpu/d3d11] y210be
[ 0.240][d][vo/gpu/d3d11] y210
[ 0.240][d][vo/gpu/d3d11] x2rgb10be
[ 0.240][d][vo/gpu/d3d11] x2bgr10
[ 0.240][d][vo/gpu/d3d11] x2bgr10be
[ 0.240][d][vo/gpu/d3d11] p210be
[ 0.240][d][vo/gpu/d3d11] p210 => 2 planes 2x1 16/6 [r16/rg16] (r/gb) [unorm]
[ 0.240][d][vo/gpu/d3d11] p410be
[ 0.240][d][vo/gpu/d3d11] p410 => 2 planes 1x1 16/6 [r16/rg16] (r/gb) [unorm]
[ 0.240][d][vo/gpu/d3d11] p216be
[ 0.240][d][vo/gpu/d3d11] p216 => 2 planes 2x1 16/0 [r16/rg16] (r/gb) [unorm]
[ 0.240][d][vo/gpu/d3d11] p416be
[ 0.240][d][vo/gpu/d3d11] p416 => 2 planes 1x1 16/0 [r16/rg16] (r/gb) [unorm]
This just isnt true I’m afraid.
This is my experience as well.
HDR in Windows is handled atrociously. Plus, some screens are HDR400 and not HDR1000; so theres discrepancy in what HDR your screen can actually handle.
The best experience I have had echoes @onekmilesbehind - I have an LG BX, and when putting Windows into 4k SDR mode (not PC mode at the resolution), MadVR correctly swaps the screen TV into HDR mode for HDR content, but otherwise leaves SDR content alone. This is the best viewing experience.
However, Kodi+MadVR+all the addons you need is not a great user experience, so I’m really keen on getting Plex to work.
My experience is confusing to say the least, because once you add an nVidia card into the mix the way Windows handles HDR changes dependant on your refresh rate settings.
Windows in 4k HDR 60hz
- SDR Apps look washed out
- Every single app triggers HDR mode on my TV; whether its an HDR app or not
- SDR content looks terrible
Windows in 4k 120hz
- the HDR toggle will not work
- nVidia driver takes over and sends HDR signals to the TV
- In Plex, this works fine with HDR content but looks terrible with SDR
- In MadVR, SDR content still gets the HDR signal sent, and MadVR has a little fit with screen distortions before righting itself
Windows in 4k SDR 60hz
- Plex/MPV seems to tonemap HDR content - it looks great, but it doesnt change my TV into HDR mode
- MadVR and other HDR apps work as intended - swapping to HDR for HDR content, and remaining in SDR otherwise.
I’d expect Plex to initiate HDR mode when HDR content is played, like MadVR does. Otherwise, Windows should remain in SDR mode as the majority of apps and games run in SDR mode, and if they’re HDR they should send the appropriate signals to the monitor.
This in line with my experiences as well.
@gbooker02 suggestion when a hdr video has been selected to play have plex htpc toggle windows hdr mode on with Win + Alt + B then begin playback, and when playback ends toggle off again, this would save requiring user interaction each and every time
note this may only be applicable to windows 11, but would cause no ill effect for older os