[vlc-commits] direct3d11: only send HDR metadata when we don't tone map the source
Steve Lhomme
git at videolan.org
Wed Mar 25 11:45:42 CET 2020
vlc | branch: master | Steve Lhomme <robux4 at ycbcr.xyz> | Wed Mar 25 11:40:53 2020 +0100| [1a78a1296b92aaae3366cd68cb6caa9a7bfa9cd1] | committer: Steve Lhomme
direct3d11: only send HDR metadata when we don't tone map the source
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=1a78a1296b92aaae3366cd68cb6caa9a7bfa9cd1
---
modules/video_output/win32/d3d11_swapchain.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/modules/video_output/win32/d3d11_swapchain.c b/modules/video_output/win32/d3d11_swapchain.c
index aee680445d..894032db1a 100644
--- a/modules/video_output/win32/d3d11_swapchain.c
+++ b/modules/video_output/win32/d3d11_swapchain.c
@@ -80,6 +80,7 @@ struct d3d11_local_swapchain
#endif /* !VLC_WINSTORE_APP */
IDXGISwapChain1 *dxgiswapChain; /* DXGI 1.2 swap chain */
IDXGISwapChain4 *dxgiswapChain4; /* DXGI 1.5 for HDR metadata */
+ bool send_metadata;
DXGI_HDR_METADATA_HDR10 hdr10;
ID3D11RenderTargetView *swapchainTargetView[D3D11_MAX_RENDER_TARGET];
@@ -234,6 +235,9 @@ static void SelectSwapchainColorspace(struct d3d11_local_swapchain *display, con
msg_Err(display->obj, "Failed to set colorspace %s. (hr=0x%lX)", color_spaces[best].name, hr);
done:
display->colorspace = &color_spaces[best];
+ display->send_metadata = color_spaces[best].transfer == (video_transfer_func_t) cfg->transfer &&
+ color_spaces[best].primaries == (video_color_primaries_t) cfg->primaries &&
+ color_spaces[best].color == (video_color_space_t) cfg->colorspace;
if (dxgiswapChain3)
IDXGISwapChain3_Release(dxgiswapChain3);
}
@@ -516,7 +520,8 @@ void LocalSwapchainSetMetadata( void *opaque, libvlc_video_metadata_type_t type,
struct d3d11_local_swapchain *display = opaque;
assert(type == libvlc_video_metadata_frame_hdr10);
- if (type == libvlc_video_metadata_frame_hdr10 && metadata && display->dxgiswapChain4)
+ if ( type == libvlc_video_metadata_frame_hdr10 && metadata &&
+ display->send_metadata && display->dxgiswapChain4 )
{
const libvlc_video_frame_hdr10_metadata_t *p_hdr10 = metadata;
DXGI_HDR_METADATA_HDR10 hdr10 = { 0 };
More information about the vlc-commits
mailing list