[vlc-commits] direct3d11: the luminance scaling is always the same for a given transfer function

2018-02-13 Thread Steve Lhomme
vlc/vlc-3.0 | branch: master | Steve Lhomme  | Tue Feb 13 
10:36:31 2018 +0100| [ec74962feb6c63e196f5708547d7d0994133] | committer: 
Hugo Beauzée-Luyssen

direct3d11: the luminance scaling is always the same for a given transfer 
function

(cherry picked from commit e2866b07b4db78440ce12d97924129a2406ce2c1)
Signed-off-by: Hugo Beauzée-Luyssen 

> http://git.videolan.org/gitweb.cgi/vlc/vlc-3.0.git/?a=commit;h=ec74962feb6c63e196f5708547d7d0994133
---

 modules/video_output/win32/direct3d11.c | 48 +++--
 1 file changed, 22 insertions(+), 26 deletions(-)

diff --git a/modules/video_output/win32/direct3d11.c 
b/modules/video_output/win32/direct3d11.c
index ccd2da22af..324c968bcd 100644
--- a/modules/video_output/win32/direct3d11.c
+++ b/modules/video_output/win32/direct3d11.c
@@ -1094,6 +1094,26 @@ static void DisplayD3DPicture(vout_display_sys_t *sys, 
d3d_quad_t *quad, ID3D11S
 ID3D11DeviceContext_DrawIndexed(sys->d3d_dev.d3dcontext, quad->indexCount, 
0, 0);
 }
 
+static float GetFormatLuminance(vlc_object_t *o, const video_format_t *fmt)
+{
+switch (fmt->transfer)
+{
+case TRANSFER_FUNC_SMPTE_ST2084:
+/* that's the default PQ value if the metadata are not set */
+return MAX_PQ_BRIGHTNESS;
+case TRANSFER_FUNC_HLG:
+return 1000;
+case TRANSFER_FUNC_BT470_BG:
+case TRANSFER_FUNC_BT470_M:
+case TRANSFER_FUNC_BT709:
+case TRANSFER_FUNC_SRGB:
+return DEFAULT_BRIGHTNESS;
+default:
+msg_Dbg(o, "unhandled source transfer %d", fmt->transfer);
+return DEFAULT_BRIGHTNESS;
+}
+}
+
 static void Prepare(vout_display_t *vd, picture_t *picture, subpicture_t 
*subpicture)
 {
 vout_display_sys_t *sys = vd->sys;
@@ -1199,10 +1219,7 @@ static void Prepare(vout_display_t *vd, picture_t 
*picture, subpicture_t *subpic
 
 if (picture->format.mastering.max_luminance)
 {
-if ( picture->format.mastering.max_luminance < 1)
-UpdateQuadLuminanceScale(vd, >picQuad, (float) 
picture->format.mastering.max_luminance / sys->display.luminance_peak);
-else
-UpdateQuadLuminanceScale(vd, >picQuad, (float) 
picture->format.mastering.max_luminance / (1000 * sys->display.luminance_peak));
+UpdateQuadLuminanceScale(vd, >picQuad, 
GetFormatLuminance(VLC_OBJECT(vd), >format) / 
(float)sys->display.luminance_peak);
 
 if (sys->dxgiswapChain4)
 {
@@ -2602,28 +2619,7 @@ static int SetupQuad(vout_display_t *vd, const 
video_format_t *fmt, d3d_quad_t *
 HRESULT hr;
 const bool RGB_shader = IsRGBShader(cfg);
 
-unsigned src_luminance_peak;
-switch (fmt->transfer)
-{
-case TRANSFER_FUNC_SMPTE_ST2084:
-/* that's the default PQ value if the metadata are not set */
-src_luminance_peak = MAX_PQ_BRIGHTNESS;
-break;
-case TRANSFER_FUNC_HLG:
-src_luminance_peak = 1000;
-break;
-case TRANSFER_FUNC_BT470_BG:
-case TRANSFER_FUNC_BT470_M:
-case TRANSFER_FUNC_BT709:
-case TRANSFER_FUNC_SRGB:
-src_luminance_peak = DEFAULT_BRIGHTNESS;
-break;
-default:
-msg_Dbg(vd, "unhandled source transfer %d", fmt->transfer);
-src_luminance_peak = DEFAULT_BRIGHTNESS;
-break;
-}
-quad->shaderConstants.LuminanceScale = (float)src_luminance_peak / 
(float)sys->display.luminance_peak;
+quad->shaderConstants.LuminanceScale = GetFormatLuminance(VLC_OBJECT(vd), 
fmt) / (float)sys->display.luminance_peak;
 
 /* pixel shader constant buffer */
 quad->shaderConstants.Opacity = 1.0;

___
vlc-commits mailing list
vlc-commits@videolan.org
https://mailman.videolan.org/listinfo/vlc-commits


[vlc-commits] direct3d11: the luminance scaling is always the same for a given transfer function

2018-02-13 Thread Steve Lhomme
vlc | branch: master | Steve Lhomme  | Tue Feb 13 10:36:31 
2018 +0100| [e2866b07b4db78440ce12d97924129a2406ce2c1] | committer: Steve Lhomme

direct3d11: the luminance scaling is always the same for a given transfer 
function

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=e2866b07b4db78440ce12d97924129a2406ce2c1
---

 modules/video_output/win32/direct3d11.c | 48 +++--
 1 file changed, 22 insertions(+), 26 deletions(-)

diff --git a/modules/video_output/win32/direct3d11.c 
b/modules/video_output/win32/direct3d11.c
index 57d68ba9d5..3f21572f8e 100644
--- a/modules/video_output/win32/direct3d11.c
+++ b/modules/video_output/win32/direct3d11.c
@@ -1086,6 +1086,26 @@ static void DisplayD3DPicture(vout_display_sys_t *sys, 
d3d_quad_t *quad, ID3D11S
 ID3D11DeviceContext_DrawIndexed(sys->d3d_dev.d3dcontext, quad->indexCount, 
0, 0);
 }
 
+static float GetFormatLuminance(vlc_object_t *o, const video_format_t *fmt)
+{
+switch (fmt->transfer)
+{
+case TRANSFER_FUNC_SMPTE_ST2084:
+/* that's the default PQ value if the metadata are not set */
+return MAX_PQ_BRIGHTNESS;
+case TRANSFER_FUNC_HLG:
+return 1000;
+case TRANSFER_FUNC_BT470_BG:
+case TRANSFER_FUNC_BT470_M:
+case TRANSFER_FUNC_BT709:
+case TRANSFER_FUNC_SRGB:
+return DEFAULT_BRIGHTNESS;
+default:
+msg_Dbg(o, "unhandled source transfer %d", fmt->transfer);
+return DEFAULT_BRIGHTNESS;
+}
+}
+
 static void Prepare(vout_display_t *vd, picture_t *picture, subpicture_t 
*subpicture)
 {
 vout_display_sys_t *sys = vd->sys;
@@ -1191,10 +1211,7 @@ static void Prepare(vout_display_t *vd, picture_t 
*picture, subpicture_t *subpic
 
 if (picture->format.mastering.max_luminance)
 {
-if ( picture->format.mastering.max_luminance < 1)
-UpdateQuadLuminanceScale(vd, >picQuad, (float) 
picture->format.mastering.max_luminance / sys->display.luminance_peak);
-else
-UpdateQuadLuminanceScale(vd, >picQuad, (float) 
picture->format.mastering.max_luminance / (1000 * sys->display.luminance_peak));
+UpdateQuadLuminanceScale(vd, >picQuad, 
GetFormatLuminance(VLC_OBJECT(vd), >format) / 
(float)sys->display.luminance_peak);
 
 if (sys->dxgiswapChain4)
 {
@@ -2592,28 +2609,7 @@ static int SetupQuad(vout_display_t *vd, const 
video_format_t *fmt, d3d_quad_t *
 HRESULT hr;
 const bool RGB_shader = IsRGBShader(cfg);
 
-unsigned src_luminance_peak;
-switch (fmt->transfer)
-{
-case TRANSFER_FUNC_SMPTE_ST2084:
-/* that's the default PQ value if the metadata are not set */
-src_luminance_peak = MAX_PQ_BRIGHTNESS;
-break;
-case TRANSFER_FUNC_HLG:
-src_luminance_peak = 1000;
-break;
-case TRANSFER_FUNC_BT470_BG:
-case TRANSFER_FUNC_BT470_M:
-case TRANSFER_FUNC_BT709:
-case TRANSFER_FUNC_SRGB:
-src_luminance_peak = DEFAULT_BRIGHTNESS;
-break;
-default:
-msg_Dbg(vd, "unhandled source transfer %d", fmt->transfer);
-src_luminance_peak = DEFAULT_BRIGHTNESS;
-break;
-}
-quad->shaderConstants.LuminanceScale = (float)src_luminance_peak / 
(float)sys->display.luminance_peak;
+quad->shaderConstants.LuminanceScale = GetFormatLuminance(VLC_OBJECT(vd), 
fmt) / (float)sys->display.luminance_peak;
 
 /* pixel shader constant buffer */
 quad->shaderConstants.Opacity = 1.0;

___
vlc-commits mailing list
vlc-commits@videolan.org
https://mailman.videolan.org/listinfo/vlc-commits